|
43 | 43 |
|
44 | 44 | var typeKinds = indexTypeKinds();
|
45 | 45 | var typeTypeId = findTypeTypeId();
|
| 46 | + var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 }; |
46 | 47 |
|
47 | 48 | // for each package, is an array with packages to get to this one
|
48 | 49 | var canonPkgPaths = computeCanonicalPackagePaths();
|
|
378 | 379 |
|
379 | 380 | function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) {
|
380 | 381 | var typeObj = zigAnalysis.types[typeIndex];
|
| 382 | + var declNameOk = declCanRepresentTypeKind(typeObj.kind); |
381 | 383 | if (wantLink) {
|
382 | 384 | var declIndex = getCanonTypeDecl(typeIndex);
|
383 | 385 | var declPath = getCanonDeclPath(declIndex);
|
384 |
| - var haveLink = declPath != null; |
385 |
| - var typeNameHtml = typeName(typeObj, true, !haveLink, fnDecl, linkFnNameDecl); |
386 |
| - if (haveLink) { |
387 |
| - return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + typeNameHtml + '</a>'; |
| 386 | + if (declPath == null) { |
| 387 | + return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl); |
| 388 | + } |
| 389 | + var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ? |
| 390 | + declPath.declNames[declPath.declNames.length - 1] : |
| 391 | + typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl); |
| 392 | + if (wantLink && wantHtml) { |
| 393 | + return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + name + '</a>'; |
388 | 394 | } else {
|
389 |
| - return typeNameHtml; |
| 395 | + return name; |
390 | 396 | }
|
391 | 397 | } else {
|
392 | 398 | return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
|
393 | 399 | }
|
394 | 400 | }
|
395 | 401 |
|
| 402 | + function shouldSkipParamName(typeIndex, paramName) { |
| 403 | + var typeObj = zigAnalysis.types[typeIndex]; |
| 404 | + if (typeObj.kind === typeKinds.Pointer && getPtrSize(typeObj) === pointerSizeEnum.One) { |
| 405 | + typeIndex = typeObj.elem; |
| 406 | + } |
| 407 | + return typeIndexName(typeIndex, false, true).toLowerCase() === paramName; |
| 408 | + } |
| 409 | + |
| 410 | + function getPtrSize(typeObj) { |
| 411 | + return (typeObj.len == null) ? pointerSizeEnum.One : typeObj.len; |
| 412 | + } |
| 413 | + |
396 | 414 | function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl) {
|
397 | 415 | switch (typeObj.kind) {
|
398 | 416 | case typeKinds.Array:
|
|
408 | 426 | case typeKinds.Pointer:
|
409 | 427 | var name = "";
|
410 | 428 | switch (typeObj.len) {
|
411 |
| - case 0: |
| 429 | + case pointerSizeEnum.One: |
412 | 430 | default:
|
413 | 431 | name += "*";
|
414 | 432 | break;
|
415 |
| - case 1: |
| 433 | + case pointerSizeEnum.Many: |
416 | 434 | name += "[*]";
|
417 | 435 | break;
|
418 |
| - case 2: |
| 436 | + case pointerSizeEnum.Slice: |
419 | 437 | name += "[]";
|
420 | 438 | break;
|
421 |
| - case 3: |
| 439 | + case pointerSizeEnum.C: |
422 | 440 | name += "[*c]";
|
423 | 441 | break;
|
424 | 442 | }
|
|
562 | 580 | payloadHtml += ', ';
|
563 | 581 | }
|
564 | 582 |
|
| 583 | + var argTypeIndex = typeObj.args[i]; |
| 584 | + |
565 | 585 | if (fnDecl != null && zigAnalysis.astNodes[fnDecl.src].fields != null) {
|
566 | 586 | var paramDeclIndex = zigAnalysis.astNodes[fnDecl.src].fields[i];
|
567 | 587 | var paramName = zigAnalysis.astNodes[paramDeclIndex].name;
|
568 | 588 |
|
569 | 589 | if (paramName != null) {
|
570 |
| - payloadHtml += paramName + ': '; |
| 590 | + // skip if it matches the type name |
| 591 | + if (argTypeIndex == null || !shouldSkipParamName(argTypeIndex, paramName)) { |
| 592 | + payloadHtml += paramName + ': '; |
| 593 | + } |
571 | 594 | }
|
572 | 595 | }
|
573 | 596 |
|
574 |
| - var argTypeIndex = typeObj.args[i]; |
575 | 597 | if (argTypeIndex != null) {
|
576 | 598 | payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
|
577 | 599 | } else if (wantHtml) {
|
|
0 commit comments