Fix bugs in ClassDecl. Not replace defintion with baseclass
Fix improper RelationalExpr type checking

  * ast_expr.cc(ReplationalExpr::DoCheck): Fix the condition of
    RelationalExpr to avoid non-numeric type comparison.

Signed-off-by: Hongjiu Zhang <zhanghj@umich.edu>
Fix a class exdending bug

  * ast_decl.cc(ClassDecl::MergeSymbolTable): Fix a bug that dcc keeps
    the new definition of functions when name collision happens and
    types don't match.

Signed-off-by: Hongjiu Zhang <zhanghj@umich.edu>
Fix missed type checking of ArithmeticExpr

  * ast_expr.cc: Add error reporting for ArithmeticExpr when operands
    are not numbers.
  * ast_expr.h: Clear codes.

Signed-off-by: Hongjiu Zhang <zhanghj@umich.edu>
Add a simple test script

  * test.sh: Add a simple but nice test script.

Signed-off-by: Hongjiu Zhang <zhanghj@umich.edu>
Rewrite RelationalExpr::DoCheck

  * ast_expr.cc(RelationalExpr::DoCheck): Rewrite in the style of
    ArithmeticExpr::BinaryCheck() to avoid missed type checking.

Signed-off-by: Hongjiu Zhang <zhanghj@umich.edu>
Fix a missing type error check in LogicalExpr

  * ast_expr.cc(LogicalExpr::UnaryCheck, LogicalExpr::BinaryCheck,
    LogicalExpr::BinaryCheck): Add a missing check of operand type
    check when one operand of binary operator is error.
  * ast_expr.h: Clear codes.

Signed-off-by: Hongjiu Zhang <zhanghj@umich.edu>
Fix type inference mistakes of array operations

  * ast_expr.cc(ArrayAccess::DoCheck, NewArrayExpr::DoCheck): Fix too
    relaxed type inference when wrong subscription given to any array
    operations.

Signed-off-by: Hongjiu Zhang <zhanghj@umich.edu>
Refactor codes

  * ast_expr.cc, ast_expr.h(Call::UnaryCheck, Call::BinaryCheck,
    Call:CallCheck, Call::DoCheck): Refactor codes.
  * ast_type.cc(Type::IsEquivalentTo, NamedType::IsCompatibleWith):
    Clear codes.

Signed-off-by: Hongjiu Zhang <zhanghj@umich.edu>
Update to the new solution

  * solution/dcc: Update to the new solution.

Signed-off-by: Hongjiu Zhang <zhanghj@umich.edu>
Add Fn, Var, Class and Interface check to Call and FieldAccess Check
Fix a segmentation fault

  * ast_expr.cc: Fix a segmentation fault bug caused by dereference be-
    fore NULL checking.

Signed-off-by: Hongjiu Zhang <zhanghj@umich.edu>
Fix a bug when "this" is used outside the class

  * ast_expr.cc, ast_expr.h(FieldAccess::UnaryCheck,
    FieldAccess::NativeAccessCheck, FieldAccess::ForeignAccessCheck,
    FieldAccess::BinaryCheck, FieldAccess::DoCheck): Clear codes. Fix a
    cascading error report bug when this is used as the base of
    FieldAccess but outside the class scope.

Signed-off-by: Hongjiu Zhang <zhanghj@umich.edu>