MCPcopy Create free account
hub / github.com/Effect-TS/tsgo / processTypeImpl

Method processTypeImpl

internal/schemagen/structural.go:204–303  ·  view source on GitHub ↗

processTypeImpl dispatches type processing based on type flags.

(t *checker.Type, ctx processingContext)

Source from the content-addressed store, hash-verified

202
203// processTypeImpl dispatches type processing based on type flags.
204func (g *StructuralSchemaGen) processTypeImpl(t *checker.Type, ctx processingContext) (expr *ast.Node, skipHoisting bool, err error) {
205 flags := t.Flags()
206
207 // Primitive types
208 if flags&checker.TypeFlagsString != 0 {
209 return g.createApiPropertyAccess("String"), true, nil
210 }
211 if flags&checker.TypeFlagsNumber != 0 {
212 return g.createApiPropertyAccess("Number"), true, nil
213 }
214 if flags&checker.TypeFlagsBoolean != 0 {
215 return g.createApiPropertyAccess("Boolean"), true, nil
216 }
217 if flags&checker.TypeFlagsBigInt != 0 {
218 return g.createApiPropertyAccess("BigInt"), true, nil
219 }
220 if flags&checker.TypeFlagsVoid != 0 {
221 return g.createApiPropertyAccess("Void"), true, nil
222 }
223 if flags&checker.TypeFlagsUndefined != 0 {
224 return g.createApiPropertyAccess("Undefined"), true, nil
225 }
226 if flags&checker.TypeFlagsNull != 0 {
227 return g.createApiPropertyAccess("Null"), true, nil
228 }
229 if flags&checker.TypeFlagsNever != 0 {
230 return g.createApiPropertyAccess("Never"), true, nil
231 }
232 if flags&checker.TypeFlagsAny != 0 {
233 return g.createApiPropertyAccess("Any"), true, nil
234 }
235 if flags&checker.TypeFlagsUnknown != 0 {
236 return g.createApiPropertyAccess("Unknown"), true, nil
237 }
238
239 // Literal types
240 if flags&checker.TypeFlagsStringLiteral != 0 {
241 val, ok := t.AsLiteralType().Value().(string)
242 if ok {
243 return g.createApiCall("Literal", []*ast.Node{g.Tracker.NewStringLiteral(val, 0)}), true, nil
244 }
245 }
246 if flags&checker.TypeFlagsNumberLiteral != 0 {
247 return g.createApiCall("Literal", []*ast.Node{
248 g.Tracker.NewNumericLiteral(t.AsLiteralType().String(), 0),
249 }), true, nil
250 }
251 if flags&checker.TypeFlagsBooleanLiteral != 0 {
252 val, ok := t.AsLiteralType().Value().(bool)
253 if ok && val {
254 return g.createApiCall("Literal", []*ast.Node{g.Tracker.NewKeywordExpression(ast.KindTrueKeyword)}), true, nil
255 }
256 return g.createApiCall("Literal", []*ast.Node{g.Tracker.NewKeywordExpression(ast.KindFalseKeyword)}), true, nil
257 }
258
259 // Union types
260 if flags&checker.TypeFlagsUnion != 0 {
261 types := t.Types()

Callers 1

processTypeMethod · 0.95

Calls 8

createApiCallMethod · 0.95
processUnionTypeMethod · 0.95
processArrayTypeMethod · 0.95
processTupleTypeMethod · 0.95
processObjectTypeMethod · 0.95
StringMethod · 0.45

Tested by

no test coverage detected