TypeCheck implements the Expr interface.
( ctx context.Context, semaCtx *SemaContext, desired *types.T, )
| 1071 | |
| 1072 | // TypeCheck implements the Expr interface. |
| 1073 | func (expr *IsOfTypeExpr) TypeCheck( |
| 1074 | ctx context.Context, semaCtx *SemaContext, desired *types.T, |
| 1075 | ) (TypedExpr, error) { |
| 1076 | exprTyped, err := expr.Expr.TypeCheck(ctx, semaCtx, types.Any) |
| 1077 | if err != nil { |
| 1078 | return nil, err |
| 1079 | } |
| 1080 | expr.resolvedTypes = make([]*types.T, len(expr.Types)) |
| 1081 | for i := range expr.Types { |
| 1082 | typ, err := ResolveType(ctx, expr.Types[i], semaCtx.GetTypeResolver()) |
| 1083 | if err != nil { |
| 1084 | return nil, err |
| 1085 | } |
| 1086 | expr.Types[i] = typ |
| 1087 | expr.resolvedTypes[i] = typ |
| 1088 | } |
| 1089 | expr.Expr = exprTyped |
| 1090 | expr.typ = types.Bool |
| 1091 | return expr, nil |
| 1092 | } |
| 1093 | |
| 1094 | // TypeCheck implements the Expr interface. |
| 1095 | func (expr *NotExpr) TypeCheck( |
nothing calls this directly
no test coverage detected