jitcraft/SemanticAnalysis.h
changeset 40 ce787d61fb71
parent 30 8c8bf75114f7
child 59 b7d61ddb3c8d
     1.1 --- a/jitcraft/SemanticAnalysis.h	Tue Jul 03 01:00:02 2012 -0700
     1.2 +++ b/jitcraft/SemanticAnalysis.h	Tue Jul 03 01:14:15 2012 -0700
     1.3 @@ -31,13 +31,13 @@
     1.4      ParseTree *tree_;
     1.5      unsigned loopDepth_;
     1.6      Scope *scope_;
     1.7 -    Type *function_;
     1.8 +    ScopedRoot<Type> function_;
     1.9  
    1.10    private:
    1.11 -    bool canTest(AstNode *node, Type *type);
    1.12 -    void unaryTypeError(AstNode *node, TokenKind token, Type *type);
    1.13 -    void binaryTypeError(AstNode *node, TokenKind token, Type *left, Type *right);
    1.14 -    Type *typeCheckBinary(AstNode *node, TokenKind token, Type *left, Type *right);
    1.15 +    bool canTest(AstNode *node, Handle<Type> type);
    1.16 +    void unaryTypeError(AstNode *node, TokenKind token, Handle<Type> type);
    1.17 +    void binaryTypeError(AstNode *node, TokenKind token, Handle<Type> left, Handle<Type> right);
    1.18 +    Type *typeCheckBinary(AstNode *node, TokenKind token, Handle<Type> left, Handle<Type> right);
    1.19  
    1.20      // These check if one type is compatible with another type, for various
    1.21      // purposes, like:
    1.22 @@ -45,10 +45,10 @@
    1.23      //      call(a, b)    matches expected arg type
    1.24      //      a = b         matches declared type
    1.25      //
    1.26 -    bool typeCheckArrayAssignment(AstNode *node, Type *given, Type *actual, bool forAssign);
    1.27 -    bool typeCheckAssignment(AstNode *node, Type *given, Type *actual, bool forAssign);
    1.28 +    bool typeCheckArrayAssignment(AstNode *node, Handle<Type> given, Handle<Type> actual, bool forAssign);
    1.29 +    bool typeCheckAssignment(AstNode *node, Handle<Type> given, Handle<Type> actual, bool forAssign);
    1.30  
    1.31 -    bool typeCheckParameter(AstNode *node, Type *given, Type *actual);
    1.32 +    bool typeCheckParameter(AstNode *node, Handle<Type> given, Handle<Type> actual);
    1.33  
    1.34      Type *visitForLoad(Expression *expression);
    1.35      Type *visitForRef(Expression *expression);