]> Cypherpunks repositories - gostls13.git/commitdiff
all: add more uses of stringer
authorDaniel Martí <mvdan@mvdan.cc>
Mon, 13 Nov 2017 09:43:17 +0000 (09:43 +0000)
committerDaniel Martí <mvdan@mvdan.cc>
Mon, 19 Feb 2018 21:33:14 +0000 (21:33 +0000)
By grepping for ]string{$, one can find many manual implementations of
stringer. The debug/dwarf ones needed the new -trimprefix flag, too.

html/template was fairly simple, just implementing the fallback as
stringer would. The changes there are trivial.

The ones in debug/dwarf needed a bit of extra logic since the GoString
wants to use its own format, depending on whether or not the value is
one of the known constants.

Change-Id: I501ea7deaa538fa425c8e9c2bb895f480169273f
Reviewed-on: https://go-review.googlesource.com/77253
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/debug/dwarf/attr_string.go [new file with mode: 0644]
src/debug/dwarf/class_string.go
src/debug/dwarf/const.go
src/debug/dwarf/tag_string.go [new file with mode: 0644]
src/html/template/attr_string.go [new file with mode: 0644]
src/html/template/context.go

diff --git a/src/debug/dwarf/attr_string.go b/src/debug/dwarf/attr_string.go
new file mode 100644 (file)
index 0000000..34e3659
--- /dev/null
@@ -0,0 +1,89 @@
+// Code generated by "stringer -type Attr -trimprefix=Attr"; DO NOT EDIT.
+
+package dwarf
+
+import "strconv"
+
+const _Attr_name = "SiblingLocationNameOrderingByteSizeBitOffsetBitSizeStmtListLowpcHighpcLanguageDiscrDiscrValueVisibilityImportStringLengthCommonRefCompDirConstValueContainingTypeDefaultValueInlineIsOptionalLowerBoundProducerPrototypedReturnAddrStartScopeStrideSizeUpperBoundAbstractOriginAccessibilityAddrClassArtificialBaseTypesCallingCountDataMemberLocDeclColumnDeclFileDeclLineDeclarationDiscrListEncodingExternalFrameBaseFriendIdentifierCaseMacroInfoNamelistItemPrioritySegmentSpecificationStaticLinkTypeUseLocationVarParamVirtualityVtableElemLocAllocatedAssociatedDataLocationStrideEntrypcUseUTF8ExtensionRangesTrampolineCallColumnCallFileCallLineDescription"
+
+var _Attr_map = map[Attr]string{
+       1:  _Attr_name[0:7],
+       2:  _Attr_name[7:15],
+       3:  _Attr_name[15:19],
+       9:  _Attr_name[19:27],
+       11: _Attr_name[27:35],
+       12: _Attr_name[35:44],
+       13: _Attr_name[44:51],
+       16: _Attr_name[51:59],
+       17: _Attr_name[59:64],
+       18: _Attr_name[64:70],
+       19: _Attr_name[70:78],
+       21: _Attr_name[78:83],
+       22: _Attr_name[83:93],
+       23: _Attr_name[93:103],
+       24: _Attr_name[103:109],
+       25: _Attr_name[109:121],
+       26: _Attr_name[121:130],
+       27: _Attr_name[130:137],
+       28: _Attr_name[137:147],
+       29: _Attr_name[147:161],
+       30: _Attr_name[161:173],
+       32: _Attr_name[173:179],
+       33: _Attr_name[179:189],
+       34: _Attr_name[189:199],
+       37: _Attr_name[199:207],
+       39: _Attr_name[207:217],
+       42: _Attr_name[217:227],
+       44: _Attr_name[227:237],
+       46: _Attr_name[237:247],
+       47: _Attr_name[247:257],
+       49: _Attr_name[257:271],
+       50: _Attr_name[271:284],
+       51: _Attr_name[284:293],
+       52: _Attr_name[293:303],
+       53: _Attr_name[303:312],
+       54: _Attr_name[312:319],
+       55: _Attr_name[319:324],
+       56: _Attr_name[324:337],
+       57: _Attr_name[337:347],
+       58: _Attr_name[347:355],
+       59: _Attr_name[355:363],
+       60: _Attr_name[363:374],
+       61: _Attr_name[374:383],
+       62: _Attr_name[383:391],
+       63: _Attr_name[391:399],
+       64: _Attr_name[399:408],
+       65: _Attr_name[408:414],
+       66: _Attr_name[414:428],
+       67: _Attr_name[428:437],
+       68: _Attr_name[437:449],
+       69: _Attr_name[449:457],
+       70: _Attr_name[457:464],
+       71: _Attr_name[464:477],
+       72: _Attr_name[477:487],
+       73: _Attr_name[487:491],
+       74: _Attr_name[491:502],
+       75: _Attr_name[502:510],
+       76: _Attr_name[510:520],
+       77: _Attr_name[520:533],
+       78: _Attr_name[533:542],
+       79: _Attr_name[542:552],
+       80: _Attr_name[552:564],
+       81: _Attr_name[564:570],
+       82: _Attr_name[570:577],
+       83: _Attr_name[577:584],
+       84: _Attr_name[584:593],
+       85: _Attr_name[593:599],
+       86: _Attr_name[599:609],
+       87: _Attr_name[609:619],
+       88: _Attr_name[619:627],
+       89: _Attr_name[627:635],
+       90: _Attr_name[635:646],
+}
+
+func (i Attr) String() string {
+       if str, ok := _Attr_map[i]; ok {
+               return str
+       }
+       return "Attr(" + strconv.FormatInt(int64(i), 10) + ")"
+}
index d57d9f71c4350ea25a78ba7874a41fb469c4d980..a6aabff524fe965524989ec52db58869cbd53589 100644 (file)
@@ -1,16 +1,16 @@
-// generated by stringer -type=Class; DO NOT EDIT
+// Code generated by "stringer -type=Class"; DO NOT EDIT.
 
 package dwarf
 
-import "fmt"
+import "strconv"
 
 const _Class_name = "ClassUnknownClassAddressClassBlockClassConstantClassExprLocClassFlagClassLinePtrClassLocListPtrClassMacPtrClassRangeListPtrClassReferenceClassReferenceSigClassStringClassReferenceAltClassStringAlt"
 
 var _Class_index = [...]uint8{0, 12, 24, 34, 47, 59, 68, 80, 95, 106, 123, 137, 154, 165, 182, 196}
 
 func (i Class) String() string {
-       if i < 0 || i+1 >= Class(len(_Class_index)) {
-               return fmt.Sprintf("Class(%d)", i)
+       if i < 0 || i >= Class(len(_Class_index)-1) {
+               return "Class(" + strconv.FormatInt(int64(i), 10) + ")"
        }
        return _Class_name[_Class_index[i]:_Class_index[i+1]]
 }
index 04d8c506b063cd5507c40613591d1436fca1df3a..4dda83e6928d332bd1cc97cfa582052e11c860dd 100644 (file)
@@ -6,7 +6,7 @@
 
 package dwarf
 
-import "strconv"
+//go:generate stringer -type Attr -trimprefix=Attr
 
 // An Attr identifies the attribute type in a DWARF Entry's Field.
 type Attr uint32
@@ -86,99 +86,11 @@ const (
        AttrDescription    Attr = 0x5A
 )
 
-var attrNames = [...]string{
-       AttrSibling:        "Sibling",
-       AttrLocation:       "Location",
-       AttrName:           "Name",
-       AttrOrdering:       "Ordering",
-       AttrByteSize:       "ByteSize",
-       AttrBitOffset:      "BitOffset",
-       AttrBitSize:        "BitSize",
-       AttrStmtList:       "StmtList",
-       AttrLowpc:          "Lowpc",
-       AttrHighpc:         "Highpc",
-       AttrLanguage:       "Language",
-       AttrDiscr:          "Discr",
-       AttrDiscrValue:     "DiscrValue",
-       AttrVisibility:     "Visibility",
-       AttrImport:         "Import",
-       AttrStringLength:   "StringLength",
-       AttrCommonRef:      "CommonRef",
-       AttrCompDir:        "CompDir",
-       AttrConstValue:     "ConstValue",
-       AttrContainingType: "ContainingType",
-       AttrDefaultValue:   "DefaultValue",
-       AttrInline:         "Inline",
-       AttrIsOptional:     "IsOptional",
-       AttrLowerBound:     "LowerBound",
-       AttrProducer:       "Producer",
-       AttrPrototyped:     "Prototyped",
-       AttrReturnAddr:     "ReturnAddr",
-       AttrStartScope:     "StartScope",
-       AttrStrideSize:     "StrideSize",
-       AttrUpperBound:     "UpperBound",
-       AttrAbstractOrigin: "AbstractOrigin",
-       AttrAccessibility:  "Accessibility",
-       AttrAddrClass:      "AddrClass",
-       AttrArtificial:     "Artificial",
-       AttrBaseTypes:      "BaseTypes",
-       AttrCalling:        "Calling",
-       AttrCount:          "Count",
-       AttrDataMemberLoc:  "DataMemberLoc",
-       AttrDeclColumn:     "DeclColumn",
-       AttrDeclFile:       "DeclFile",
-       AttrDeclLine:       "DeclLine",
-       AttrDeclaration:    "Declaration",
-       AttrDiscrList:      "DiscrList",
-       AttrEncoding:       "Encoding",
-       AttrExternal:       "External",
-       AttrFrameBase:      "FrameBase",
-       AttrFriend:         "Friend",
-       AttrIdentifierCase: "IdentifierCase",
-       AttrMacroInfo:      "MacroInfo",
-       AttrNamelistItem:   "NamelistItem",
-       AttrPriority:       "Priority",
-       AttrSegment:        "Segment",
-       AttrSpecification:  "Specification",
-       AttrStaticLink:     "StaticLink",
-       AttrType:           "Type",
-       AttrUseLocation:    "UseLocation",
-       AttrVarParam:       "VarParam",
-       AttrVirtuality:     "Virtuality",
-       AttrVtableElemLoc:  "VtableElemLoc",
-       AttrAllocated:      "Allocated",
-       AttrAssociated:     "Associated",
-       AttrDataLocation:   "DataLocation",
-       AttrStride:         "Stride",
-       AttrEntrypc:        "Entrypc",
-       AttrUseUTF8:        "UseUTF8",
-       AttrExtension:      "Extension",
-       AttrRanges:         "Ranges",
-       AttrTrampoline:     "Trampoline",
-       AttrCallColumn:     "CallColumn",
-       AttrCallFile:       "CallFile",
-       AttrCallLine:       "CallLine",
-       AttrDescription:    "Description",
-}
-
-func (a Attr) String() string {
-       if int(a) < len(attrNames) {
-               s := attrNames[a]
-               if s != "" {
-                       return s
-               }
-       }
-       return strconv.Itoa(int(a))
-}
-
 func (a Attr) GoString() string {
-       if int(a) < len(attrNames) {
-               s := attrNames[a]
-               if s != "" {
-                       return "dwarf.Attr" + s
-               }
+       if str, ok := _Attr_map[a]; ok {
+               return "dwarf.Attr" + str
        }
-       return "dwarf.Attr(" + strconv.FormatInt(int64(a), 10) + ")"
+       return "dwarf." + a.String()
 }
 
 // A format is a DWARF data encoding format.
@@ -218,6 +130,8 @@ const (
        formGnuStrpAlt format = 0x1f21
 )
 
+//go:generate stringer -type Tag -trimprefix=Tag
+
 // A Tag is the classification (the type) of an Entry.
 type Tag uint32
 
@@ -287,88 +201,11 @@ const (
        TagTemplateAlias       Tag = 0x43
 )
 
-var tagNames = [...]string{
-       TagArrayType:              "ArrayType",
-       TagClassType:              "ClassType",
-       TagEntryPoint:             "EntryPoint",
-       TagEnumerationType:        "EnumerationType",
-       TagFormalParameter:        "FormalParameter",
-       TagImportedDeclaration:    "ImportedDeclaration",
-       TagLabel:                  "Label",
-       TagLexDwarfBlock:          "LexDwarfBlock",
-       TagMember:                 "Member",
-       TagPointerType:            "PointerType",
-       TagReferenceType:          "ReferenceType",
-       TagCompileUnit:            "CompileUnit",
-       TagStringType:             "StringType",
-       TagStructType:             "StructType",
-       TagSubroutineType:         "SubroutineType",
-       TagTypedef:                "Typedef",
-       TagUnionType:              "UnionType",
-       TagUnspecifiedParameters:  "UnspecifiedParameters",
-       TagVariant:                "Variant",
-       TagCommonDwarfBlock:       "CommonDwarfBlock",
-       TagCommonInclusion:        "CommonInclusion",
-       TagInheritance:            "Inheritance",
-       TagInlinedSubroutine:      "InlinedSubroutine",
-       TagModule:                 "Module",
-       TagPtrToMemberType:        "PtrToMemberType",
-       TagSetType:                "SetType",
-       TagSubrangeType:           "SubrangeType",
-       TagWithStmt:               "WithStmt",
-       TagAccessDeclaration:      "AccessDeclaration",
-       TagBaseType:               "BaseType",
-       TagCatchDwarfBlock:        "CatchDwarfBlock",
-       TagConstType:              "ConstType",
-       TagConstant:               "Constant",
-       TagEnumerator:             "Enumerator",
-       TagFileType:               "FileType",
-       TagFriend:                 "Friend",
-       TagNamelist:               "Namelist",
-       TagNamelistItem:           "NamelistItem",
-       TagPackedType:             "PackedType",
-       TagSubprogram:             "Subprogram",
-       TagTemplateTypeParameter:  "TemplateTypeParameter",
-       TagTemplateValueParameter: "TemplateValueParameter",
-       TagThrownType:             "ThrownType",
-       TagTryDwarfBlock:          "TryDwarfBlock",
-       TagVariantPart:            "VariantPart",
-       TagVariable:               "Variable",
-       TagVolatileType:           "VolatileType",
-       TagDwarfProcedure:         "DwarfProcedure",
-       TagRestrictType:           "RestrictType",
-       TagInterfaceType:          "InterfaceType",
-       TagNamespace:              "Namespace",
-       TagImportedModule:         "ImportedModule",
-       TagUnspecifiedType:        "UnspecifiedType",
-       TagPartialUnit:            "PartialUnit",
-       TagImportedUnit:           "ImportedUnit",
-       TagMutableType:            "MutableType",
-       TagCondition:              "Condition",
-       TagSharedType:             "SharedType",
-       TagTypeUnit:               "TypeUnit",
-       TagRvalueReferenceType:    "RvalueReferenceType",
-       TagTemplateAlias:          "TemplateAlias",
-}
-
-func (t Tag) String() string {
-       if int(t) < len(tagNames) {
-               s := tagNames[t]
-               if s != "" {
-                       return s
-               }
-       }
-       return strconv.Itoa(int(t))
-}
-
 func (t Tag) GoString() string {
-       if int(t) < len(tagNames) {
-               s := tagNames[t]
-               if s != "" {
-                       return "dwarf.Tag" + s
-               }
+       if t <= TagTemplateAlias {
+               return "dwarf.Tag" + t.String()
        }
-       return "dwarf.Tag(" + strconv.FormatInt(int64(t), 10) + ")"
+       return "dwarf." + t.String()
 }
 
 // Location expression operators.
diff --git a/src/debug/dwarf/tag_string.go b/src/debug/dwarf/tag_string.go
new file mode 100644 (file)
index 0000000..ac396af
--- /dev/null
@@ -0,0 +1,44 @@
+// Code generated by "stringer -type Tag -trimprefix=Tag"; DO NOT EDIT.
+
+package dwarf
+
+import "strconv"
+
+const (
+       _Tag_name_0 = "ArrayTypeClassTypeEntryPointEnumerationTypeFormalParameter"
+       _Tag_name_1 = "ImportedDeclaration"
+       _Tag_name_2 = "LabelLexDwarfBlock"
+       _Tag_name_3 = "Member"
+       _Tag_name_4 = "PointerTypeReferenceTypeCompileUnitStringTypeStructType"
+       _Tag_name_5 = "SubroutineTypeTypedefUnionTypeUnspecifiedParametersVariantCommonDwarfBlockCommonInclusionInheritanceInlinedSubroutineModulePtrToMemberTypeSetTypeSubrangeTypeWithStmtAccessDeclarationBaseTypeCatchDwarfBlockConstTypeConstantEnumeratorFileTypeFriendNamelistNamelistItemPackedTypeSubprogramTemplateTypeParameterTemplateValueParameterThrownTypeTryDwarfBlockVariantPartVariableVolatileTypeDwarfProcedureRestrictTypeInterfaceTypeNamespaceImportedModuleUnspecifiedTypePartialUnitImportedUnitMutableTypeConditionSharedTypeTypeUnitRvalueReferenceTypeTemplateAlias"
+)
+
+var (
+       _Tag_index_0 = [...]uint8{0, 9, 18, 28, 43, 58}
+       _Tag_index_2 = [...]uint8{0, 5, 18}
+       _Tag_index_4 = [...]uint8{0, 11, 24, 35, 45, 55}
+       _Tag_index_5 = [...]uint16{0, 14, 21, 30, 51, 58, 74, 89, 100, 117, 123, 138, 145, 157, 165, 182, 190, 205, 214, 222, 232, 240, 246, 254, 266, 276, 286, 307, 329, 339, 352, 363, 371, 383, 397, 409, 422, 431, 445, 460, 471, 483, 494, 503, 513, 521, 540, 553}
+)
+
+func (i Tag) String() string {
+       switch {
+       case 1 <= i && i <= 5:
+               i -= 1
+               return _Tag_name_0[_Tag_index_0[i]:_Tag_index_0[i+1]]
+       case i == 8:
+               return _Tag_name_1
+       case 10 <= i && i <= 11:
+               i -= 10
+               return _Tag_name_2[_Tag_index_2[i]:_Tag_index_2[i+1]]
+       case i == 13:
+               return _Tag_name_3
+       case 15 <= i && i <= 19:
+               i -= 15
+               return _Tag_name_4[_Tag_index_4[i]:_Tag_index_4[i+1]]
+       case 21 <= i && i <= 67:
+               i -= 21
+               return _Tag_name_5[_Tag_index_5[i]:_Tag_index_5[i+1]]
+       default:
+               return "Tag(" + strconv.FormatInt(int64(i), 10) + ")"
+       }
+}
diff --git a/src/html/template/attr_string.go b/src/html/template/attr_string.go
new file mode 100644 (file)
index 0000000..babe70c
--- /dev/null
@@ -0,0 +1,16 @@
+// Code generated by "stringer -type attr"; DO NOT EDIT.
+
+package template
+
+import "strconv"
+
+const _attr_name = "attrNoneattrScriptattrScriptTypeattrStyleattrURLattrSrcset"
+
+var _attr_index = [...]uint8{0, 8, 18, 32, 41, 48, 58}
+
+func (i attr) String() string {
+       if i >= attr(len(_attr_index)-1) {
+               return "attr(" + strconv.FormatInt(int64(i), 10) + ")"
+       }
+       return _attr_name[_attr_index[i]:_attr_index[i+1]]
+}
index 50730d3f2b775d1676880ad6268038ab2a6dbcfd..7e28cf47e213b8845c91e5f18d3da91e0482a003 100644 (file)
@@ -314,6 +314,8 @@ func (e element) String() string {
        return fmt.Sprintf("illegal element %d", int(e))
 }
 
+//go:generate stringer -type attr
+
 // attr identifies the current HTML attribute when inside the attribute,
 // that is, starting from stateAttrName until stateTag/stateText (exclusive).
 type attr uint8
@@ -332,19 +334,3 @@ const (
        // attrSrcset corresponds to a srcset attribute.
        attrSrcset
 )
-
-var attrNames = [...]string{
-       attrNone:       "attrNone",
-       attrScript:     "attrScript",
-       attrScriptType: "attrScriptType",
-       attrStyle:      "attrStyle",
-       attrURL:        "attrURL",
-       attrSrcset:     "attrSrcset",
-}
-
-func (a attr) String() string {
-       if int(a) < len(attrNames) {
-               return attrNames[a]
-       }
-       return fmt.Sprintf("illegal attr %d", int(a))
-}