MCPcopy Create free account
hub / github.com/brimdata/super / matchTypeName

Method matchTypeName

sup/parser-types.go:61–103  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

59}
60
61func (p *Parser) matchTypeName() (ast.Type, error) {
62 l := p.lexer
63 if err := l.skipSpace(); err != nil {
64 return nil, err
65 }
66 r, _, err := l.peekRune()
67 if err != nil {
68 return nil, err
69 }
70 if !(idChar(r) || isDigit(r) || r == '"') {
71 return nil, nil
72 }
73 name, err := l.scanTypeName()
74 if err != nil {
75 return nil, err
76 }
77 if name == "error" {
78 return p.matchTypeErrorBody()
79 }
80 if name == "fusion" {
81 return p.matchTypeFusionBody()
82 }
83 if name == "enum" {
84 return p.matchTypeEnumBody()
85 }
86 if t := super.LookupPrimitive(name); t != nil {
87 return &ast.TypePrimitive{Kind: "TypePrimitive", Name: name}, nil
88 }
89 // Wherever we have a type name, we can have a type def defining the
90 // type name.
91 if ok, err := l.match('='); !ok || err != nil {
92 return &ast.TypeName{Kind: "TypeName", Name: name}, nil
93 }
94 typ, err := p.parseType()
95 if err != nil {
96 return nil, err
97 }
98 return &ast.TypeDef{
99 Kind: "TypeDef",
100 Name: name,
101 Type: typ,
102 }, nil
103}
104
105func (p *Parser) matchTypeRecord() (*ast.TypeRecord, error) {
106 l := p.lexer

Callers 1

matchTypeComponentMethod · 0.95

Calls 11

matchTypeErrorBodyMethod · 0.95
matchTypeFusionBodyMethod · 0.95
matchTypeEnumBodyMethod · 0.95
parseTypeMethod · 0.95
LookupPrimitiveFunction · 0.92
idCharFunction · 0.85
isDigitFunction · 0.85
skipSpaceMethod · 0.80
peekRuneMethod · 0.80
scanTypeNameMethod · 0.80
matchMethod · 0.45

Tested by

no test coverage detected