MCPcopy Create free account
hub / github.com/araddon/qlbridge / ValueTypeFromNode

Function ValueTypeFromNode

expr/node.go:483–516  ·  view source on GitHub ↗

ValueTypeFromNode Infer Value type from Node

(n Node)

Source from the content-addressed store, hash-verified

481
482// ValueTypeFromNode Infer Value type from Node
483func ValueTypeFromNode(n Node) value.ValueType {
484 switch nt := n.(type) {
485 case *FuncNode:
486 if nt == nil {
487 return value.UnknownType
488 }
489 if nt.F.CustomFunc == nil {
490 return value.UnknownType
491 }
492 return nt.F.Type()
493 case *StringNode:
494 return value.StringType
495 case *IdentityNode:
496 // Identity types will draw type from context.
497 return value.UnknownType
498 case *NumberNode:
499 return value.NumberType
500 case *BooleanNode:
501 return value.BoolType
502 case *BinaryNode:
503 switch nt.Operator.T {
504 case lex.TokenLogicAnd, lex.TokenAnd, lex.TokenLogicOr, lex.TokenOr,
505 lex.TokenEqual, lex.TokenEqualEqual:
506 return value.BoolType
507 case lex.TokenMultiply, lex.TokenMinus, lex.TokenAdd, lex.TokenDivide:
508 return value.NumberType
509 case lex.TokenModulus:
510 return value.IntType
511 case lex.TokenLT, lex.TokenLE, lex.TokenGT, lex.TokenGE:
512 return value.BoolType
513 }
514 }
515 return value.UnknownType
516}
517
518// NewFuncNode create new Function Expression Node.
519func NewFuncNode(name string, f Func) *FuncNode {

Callers 1

Calls 1

TypeMethod · 0.65

Tested by 1