Uses of Class
edu.rice.cs.javalanglevels.TypeData

Packages that use TypeData
edu.rice.cs.javalanglevels   
 

Uses of TypeData in edu.rice.cs.javalanglevels
 

Subclasses of TypeData in edu.rice.cs.javalanglevels
 class ArrayData
          Represents the data for an array class.
 class InstanceData
          Represents the data for an instantiation of a class.
 class PackageData
          Represents the data for a piece (or pieces) of a package name.
 class PrimitiveData
          Represents the data for a given primitive type.
 class SymbolData
          Represents the data for a given class.
 

Methods in edu.rice.cs.javalanglevels that return TypeData
 TypeData ConstructorBodyTypeChecker.complexSuperConstructorInvocationAllowed(ComplexSuperConstructorInvocation that)
          This is used in the case where a complex super constructor invocation is allowed i.e.
 TypeData ConstructorBodyTypeChecker.complexThisConstructorInvocationNotAllowed(ComplexThisConstructorInvocation that)
          ComplexThisConstructorInvocations are not ever allowed--throw an appropriate error.
 TypeData LValueTypeChecker.defaultCase(JExpressionIF that)
          Most expressions cannot appear on the lhs of an assignment: give an appropriate error
protected  TypeData TypeChecker.defaultCase(JExpressionIF that)
          This method is called by default from cases that do not override forCASEOnly.
 TypeData LValueWithValueTypeChecker.defaultCase(JExpressionIF that)
          Most expressions cannot appear on the lhs of an assignment: give an appropriate error
 TypeData InterfaceBodyTypeChecker.forAbstractMethodDef(AbstractMethodDef that)
          Resolve all the stuff that is stored in the AbstractMethodDef.
 TypeData ClassBodyTypeChecker.forAbstractMethodDef(AbstractMethodDef that)
           
 TypeData LValueTypeChecker.forArrayAccess(ArrayAccess that)
          Array accesses can appear on the lhs, so check to see if the array can be assigned to
 TypeData LValueWithValueTypeChecker.forArrayAccess(ArrayAccess that)
          Array accesses can appear on the lhs, so check to see if the array can be assigned to
 TypeData ExpressionTypeChecker.forArrayAccessOnly(ArrayAccess that, TypeData lhs, TypeData index)
          Make sure the lhs is actually an array type and that the index is an int.
 TypeData ExpressionTypeChecker.forArrayInitializer(ArrayInitializer that)
          The array initializer needs the type of the array to ensure it is properly handled.
 TypeData SpecialTypeChecker.forArrayInitializerHelper(ArrayInitializer that, SymbolData type)
          Makes sure that the specified type is an array type, and then examines the elements in the array initializer and makes sure each has a type assignable to the elementType of the specified array type.
 TypeData ExpressionTypeChecker.forBitwiseAssignmentExpressionOnly(BitwiseAssignmentExpression that, TypeData nameRes, TypeData valueRes)
          Not currently supported.
 TypeData ExpressionTypeChecker.forBitwiseBinaryExpressionOnly(BitwiseBinaryExpression that, TypeData left_result, TypeData right_result)
          Not currently supported.
 TypeData ExpressionTypeChecker.forBitwiseNotExpressionOnly(BitwiseNotExpression that, TypeData valueRes)
          Not Currently Supported.
 TypeData BodyTypeChecker.forBlock(Block that)
           
 TypeData TypeChecker.forBlockOnly(Block that, TypeData[] statementsRes)
           
 TypeData SpecialTypeChecker.forBody(Body that)
          Visit each of the items in the body and make sure that none throw uncaught exceptions
 TypeData BodyTypeChecker.forBodyOnly(Body that, TypeData[] items_result)
          Look at the result of each item in the body.
 TypeData ExpressionTypeChecker.forBooleanExpressionOnly(BooleanExpression that, TypeData left_result, TypeData right_result)
          Checks if this BooleanExpression is well-formed, i.e., that left and right arguments are well-formed boolean expressions.
 TypeData ExpressionTypeChecker.forBooleanLiteralOnly(BooleanLiteral that)
           
 TypeData ConstructorBodyTypeChecker.forBracedBody(BracedBody that)
          Walk over the statements in the BracedBody, treating the first line specially.
 TypeData SpecialTypeChecker.forBracedBody(BracedBody that)
          Delegate to forBody
 TypeData TryCatchBodyTypeChecker.forBracedBody(BracedBody that)
          Overwritten here, becuase it is okay for there to be thrown exceptions in the middle of a try catch.
 TypeData ExpressionTypeChecker.forBracedBody(BracedBody that)
           
 TypeData BodyTypeChecker.forBracedBodyOnly(BracedBody that, TypeData[] items_result)
          Delegates to forBodyOnly.
 TypeData TypeChecker.forBreakStatementOnly(BreakStatement that)
           
 TypeData TypeChecker.forCastExpression(CastExpression that)
          Visit the type of the cast expression as well as the value being cast
 TypeData ExpressionTypeChecker.forCastExpression(CastExpression that)
          Try to look up the type of the cast, and visit the expression that is being cast.
 TypeData ExpressionTypeChecker.forCastExpressionOnly(CastExpression that, TypeData typeRes, TypeData valueRes)
          Checks to see if this CastExpression is okay.
 TypeData BodyTypeChecker.forCatchBlock(CatchBlock that)
          Resolves the type of the exception, and visits the body, making sure the exception variable is in scope.
 TypeData BodyTypeChecker.forCatchBlockOnly(CatchBlock that, SymbolData exception_result, TypeData block_result)
           
 TypeData ExpressionTypeChecker.forCharLiteralOnly(CharLiteral that)
           
 TypeData TypeChecker.forClassDef(ClassDef that)
          Do what is necessary to handle a class def
 TypeData TypeChecker.forClassDefOnly(ClassDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParametersRes, TypeData superRes, TypeData[] interfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forClassImportStatement(ClassImportStatement that)
          Retrieve the class being imported from the Symbol table, and make sure it is public.
 TypeData ExpressionTypeChecker.forClassLiteralOnly(ClassLiteral that)
           
 TypeData ExpressionTypeChecker.forComparisonExpressionOnly(ComparisonExpression that, TypeData left_result, TypeData right_result)
          Verify that both the left and right of this comparison expression are number types and InstanceDatas.
 TypeData ExpressionTypeChecker.forComplexAnonymousClassInstantiation(ComplexAnonymousClassInstantiation that)
          Resolve the type of this anonymous class.
 TypeData ExpressionTypeChecker.forComplexInitializedArrayInstantiation(ComplexInitializedArrayInstantiation that)
          This is not legal java--should have been caught before the TypeChecker.
 TypeData ExpressionTypeChecker.forComplexMethodInvocation(ComplexMethodInvocation that)
          Tries to match this method invocation to a method in the context.
 TypeData ExpressionTypeChecker.forComplexNamedClassInstantiation(ComplexNamedClassInstantiation that)
          Handles this complex named class instantiation.
 TypeData ExpressionTypeChecker.forComplexNameReference(ComplexNameReference that)
          To resolve this ComplexNameReference, first visit the lhs with an instance of this visitor in order to get its type.
 TypeData ExpressionTypeChecker.forComplexSuperReferenceOnly(ComplexSuperReference that, TypeData enclosing_result)
          Makes sure that the enclosing result is not null--if it is, return null.
 TypeData ExpressionTypeChecker.forComplexThisConstructorInvocation(ComplexThisConstructorInvocation that)
          ComplexThisConstructorInvocations are not ever allowed.
 TypeData ExpressionTypeChecker.forComplexThisReferenceOnly(ComplexThisReference that, TypeData enclosing_result)
          Check to make sure that the enclosing result could be resolved and that it a type name.
 TypeData ExpressionTypeChecker.forComplexUninitializedArrayInstantiation(ComplexUninitializedArrayInstantiation that)
          This is not legal java--should have been caught before the TypeChecker.
 TypeData InterfaceBodyTypeChecker.forConcreteMethodDef(ConcreteMethodDef that)
          This error should be thrown in the first pass, but throw it again here, just in case
 TypeData ClassBodyTypeChecker.forConcreteMethodDef(ConcreteMethodDef that)
          Visit all of the fields of the ConcreteMethodDef, and resolve everything.
 TypeData TypeChecker.forConcreteMethodDefOnly(ConcreteMethodDef that, TypeData mavRes, TypeData[] typeParamsRes, TypeData resRes, TypeData nameRes, TypeData paramsRes, TypeData[] throwsRes, TypeData bodyRes)
           
 TypeData ExpressionTypeChecker.forConditionalExpression(ConditionalExpression that)
          Throw runtime exception, since conditional expressions are not allowed, and this should have been caught before the TypeChecker.
 TypeData ExpressionTypeChecker.forConditionalExpressionOnly(ConditionalExpression that, TypeData condition_result, TypeData forTrue_result, TypeData forFalse_result)
          Not currently supported
 TypeData ClassBodyTypeChecker.forConstructorDef(ConstructorDef that)
          Finds the corresponding MethodData for this constructor first.
 TypeData ClassBodyTypeChecker.forConstructorDefOnly(ConstructorDef that, TypeData mavRes, TypeData[] parameters_result, TypeData[] throwsRes, TypeData bodyRes)
           
 TypeData TypeChecker.forContinueStatementOnly(ContinueStatement that)
           
 TypeData BodyTypeChecker.forDefaultCase(DefaultCase that)
          Delegate handling this default case to its superclass.
 TypeData ExpressionTypeChecker.forDivideAssignmentExpression(DivideAssignmentExpression that)
          Delegate to method for super class.
 TypeData BodyTypeChecker.forDoStatement(DoStatement that)
          First, visit the body of the do statement with a body type checker.
 TypeData BodyTypeChecker.forDoStatementOnly(DoStatement that, TypeData codeRes, TypeData condition_result)
          Make sure that the condition statement of the while returns type boolean.
 TypeData ExpressionTypeChecker.forDoubleLiteralOnly(DoubleLiteral that)
           
 TypeData ExpressionTypeChecker.forEmptyExpressionOnly(EmptyExpression that)
          Gives a Runtime Exception, because the fact that there is an EmptyExpression here should have been caught before the TypeChecker pass.
 TypeData ExpressionTypeChecker.forEmptyForCondition(EmptyForCondition that)
           
 TypeData ExpressionTypeChecker.forEqualityExpressionOnly(EqualityExpression that, TypeData left_result, TypeData right_result)
          This EqualityExpression is badly formed if left_result and right_result have incompatible types.
 TypeData SpecialTypeChecker.forExpressionStatement(ExpressionStatement that)
          Visits the expression with a new ExpressionTypeChecker, and return the result of that visitation.
 TypeData TypeChecker.forExpressionStatementOnly(ExpressionStatement that, TypeData exprRes)
           
 TypeData ExpressionTypeChecker.forFloatLiteralOnly(FloatLiteral that)
           
 TypeData SpecialTypeChecker.forFormalParameter(FormalParameter that)
           
 TypeData BodyTypeChecker.forForStatement(ForStatement that)
          First, visit the condition expression of the for statement with a special visitor that makes sure no assignment is done.
 TypeData BodyTypeChecker.forForStatementOnly(ForStatement that, TypeData init_result, TypeData condition_result, TypeData update_result, TypeData codeRes)
           
 TypeData BodyTypeChecker.forIfThenElseStatement(IfThenElseStatement that)
          First, visit the condition expression of the if-then-else statement with a special visitor that makes sure no assignment is done.
 TypeData BodyTypeChecker.forIfThenElseStatementOnly(IfThenElseStatement that, TypeData testExpression_result, TypeData thenStatement_result, TypeData elseStatement_result)
          Make sure that the conditional expression has the right type, and if both branches of the if/else return, return a value the common super type of the two return types.
 TypeData BodyTypeChecker.forIfThenStatement(IfThenStatement that)
          First, visit the condition expression of the if statement with a special visitor that makes sure no assignment is done.
 TypeData BodyTypeChecker.forIfThenStatementOnly(IfThenStatement that, TypeData testExpression_result, TypeData thenStatement_result)
           
 TypeData LValueTypeChecker.forIncrementExpression(IncrementExpression that)
          An increment expression is a special case that cannot appear on the lhs
 TypeData LValueWithValueTypeChecker.forIncrementExpression(IncrementExpression that)
          An increment expression is a special case that cannot appear on the lhs
 TypeData ExpressionTypeChecker.forIncrementExpression(IncrementExpression that)
          Visit the value of this increment expression with the LValueWithValueTypeChecker, since whatever it represents should already have a value before we try to increment it.
 TypeData ExpressionTypeChecker.forIncrementExpressionOnly(IncrementExpression that, TypeData valueRes)
          An IncrementExpression is badly formatted if the thing being incremented is a type (valueRes is not an InstanceData) or if the value being incremented cannot be assigned to.
 TypeData SpecialTypeChecker.forInitializedVariableDeclarator(InitializedVariableDeclarator that)
          If the VariableDeclarator is initialized, things get a little bit more complicated.
 TypeData SpecialTypeChecker.forInitializedVariableDeclaratorOnly(InitializedVariableDeclarator that, TypeData typeRes, TypeData nameRes, TypeData initializer_result)
          Makes sure that the initializedvariable declarator is correct (the types match) Also, add the Variable Data corresponding to this initializiation to the _vars list, so that it can be referenced within this scope.
 TypeData SpecialTypeChecker.forInnerClassDef(InnerClassDef that)
          Look up the SymbolData for this InnerClass within the enclosing data, check for cyclic inheritance, and then visit everything inside the inner class.
 TypeData ExpressionTypeChecker.forInnerClassDef(InnerClassDef that)
           
 TypeData TypeChecker.forInnerClassDefOnly(InnerClassDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData superClassRes, TypeData[] interfacesRes, TypeData bodyRes)
           
 TypeData SpecialTypeChecker.forInnerInterfaceDef(InnerInterfaceDef that)
          Look for the inner interface inside of the enclosing data.
 TypeData TypeChecker.forInnerInterfaceDefOnly(InnerInterfaceDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData[] superinterfacesRes, TypeData bodyRes)
           
 TypeData BodyTypeChecker.forInstanceInitializer(InstanceInitializer that)
           
 TypeData SpecialTypeChecker.forInstanceInitializer(InstanceInitializer that)
           
 TypeData TypeChecker.forInstanceInitializerOnly(InstanceInitializer that, TypeData codeRes)
           
 TypeData ExpressionTypeChecker.forInstanceofExpression(InstanceofExpression that)
          Try to look up the type of the instanceof, and visit the expression that is being tested.
 TypeData ExpressionTypeChecker.forInstanceofExpressionOnly(InstanceofExpression that, TypeData typeRes, TypeData valueRes)
          Checks to see if this InstanceofExpression is okay.
 TypeData ExpressionTypeChecker.forIntegerLiteralOnly(IntegerLiteral that)
           
 TypeData TypeChecker.forInterfaceDef(InterfaceDef that)
          Do everything necessary to handle an interface
 TypeData TypeChecker.forInterfaceDefOnly(InterfaceDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData[] superinterfacesRes, TypeData bodyRes)
           
 TypeData BodyTypeChecker.forLabeledCase(LabeledCase that)
          Make sure that the label for this LabeledCase is correct.
 TypeData SpecialTypeChecker.forLabeledStatement(LabeledStatement that)
           
 TypeData TypeChecker.forLabeledStatementOnly(LabeledStatement that, TypeData statementRes)
           
 TypeData ExpressionTypeChecker.forLongLiteralOnly(LongLiteral that)
           
protected static TypeData[] Augmentor.formalParameters2TypeDatas(FormalParameter[] fps, SymbolData enclosing)
          Convert the provided FormalParameter array into an array of TypeData corresponding to the types of the FormalParameters.
 TypeData TypeChecker.forMethodDefOnly(MethodDef that, TypeData mavRes, TypeData[] typeParamsRes, TypeData resRes, TypeData nameRes, TypeData paramsRes, TypeData[] throwsRes)
           
 TypeData ExpressionTypeChecker.forMinusAssignmentExpression(MinusAssignmentExpression that)
          Delegate to method for super class.
 TypeData ExpressionTypeChecker.forModAssignmentExpression(ModAssignmentExpression that)
          Delegate to method for super class.
 TypeData ExpressionTypeChecker.forMultiplyAssignmentExpression(MultiplyAssignmentExpression that)
          Delegate to method for super class.
 TypeData LValueTypeChecker.forNameReference(NameReference that)
           
 TypeData LValueWithValueTypeChecker.forNameReference(NameReference that)
           
 TypeData ExpressionTypeChecker.forNegativePostfixIncrementExpression(NegativePostfixIncrementExpression that)
           
 TypeData ExpressionTypeChecker.forNegativePrefixIncrementExpression(NegativePrefixIncrementExpression that)
           
 TypeData ExpressionTypeChecker.forNoOpExpressionOnly(NoOpExpression that, TypeData left_result, TypeData right_result)
          This should have been caught in the first pass.
 TypeData BodyTypeChecker.forNormalTryCatchStatement(NormalTryCatchStatement that)
           
 TypeData BodyTypeChecker.forNormalTryCatchStatementOnly(NormalTryCatchStatement that, TypeData tryBlockRes, TypeData[] catchBlocksRes)
          Assumes that tryBlockRes, catchBlocksRes, and finallyBlock_result are InstanceDatas
 TypeData ExpressionTypeChecker.forNotExpressionOnly(NotExpression that, TypeData valueRes)
          A NotExpression is illformed if its argument is not an instance type or its argument is not of type boolean.
 TypeData ExpressionTypeChecker.forNullLiteralOnly(NullLiteral that)
           
 TypeData ExpressionTypeChecker.forNumericAssignmentExpression(NumericAssignmentExpression that)
          Visit the lhs of this assignment with the LValueWithValueTypeChecker, which does extra checking for the lhs, because it needs to be able to be assigned to and already have a value.
 TypeData ExpressionTypeChecker.forNumericAssignmentExpressionOnly(NumericAssignmentExpression that, TypeData nameRes, TypeData valueRes)
          A NumericAssignmentExpression is okay if both the lhs and the rhs are instances, both are numbers, and the rhs is assignable to the lhs.
 TypeData ExpressionTypeChecker.forNumericBinaryExpressionOnly(NumericBinaryExpression that, TypeData left_result, TypeData right_result)
          Check if this NumericBinaryExpression was okay.
 TypeData ExpressionTypeChecker.forNumericUnaryExpressionOnly(NumericUnaryExpression that, TypeData valueRes)
          A NumericUnaryExpression was well-formed if its valueRes is an instance type and if its valueRes's symbol data is a number type (to which a double can be assigned).
 TypeData TypeChecker.forPackageStatement(PackageStatement that)
          Make sure that the package being imported does not conflict with another class in the symbol table, since we will not allow a package to be imported if it has the same name as a class.
 TypeData LValueTypeChecker.forParenthesized(Parenthesized that)
          Recur on the value stored in the parentheses
 TypeData LValueWithValueTypeChecker.forParenthesized(Parenthesized that)
          Recur on the value stored in the parentheses
 TypeData ExpressionTypeChecker.forParenthesizedOnly(Parenthesized that, TypeData valueRes)
          Check a few constraints on this Parenthesized
 TypeData ExpressionTypeChecker.forPlusAssignmentExpression(PlusAssignmentExpression that)
          Visit the lhs of this assignment with LValueWithValueTypeChecker, which does extra checking.
 TypeData ExpressionTypeChecker.forPlusAssignmentExpressionOnly(PlusAssignmentExpression that, TypeData nameRes, TypeData valueRes)
          A PlusAssignmentExpression is okay if the lhs and rhs are both instances.
 TypeData ExpressionTypeChecker.forPlusExpressionOnly(PlusExpression that, TypeData left_result, TypeData right_result)
          A plus operator can either be used on a string and any other type of object or on two numbers.
 TypeData ExpressionTypeChecker.forPositivePostfixIncrementExpression(PositivePostfixIncrementExpression that)
           
 TypeData ExpressionTypeChecker.forPositivePrefixIncrementExpression(PositivePrefixIncrementExpression that)
          For these concrete instantiations of IncrementExpression, delegate to abstract method
 TypeData TypeChecker.forPrimitiveType(PrimitiveType that)
           
 TypeData TypeChecker.forReturnStatementOnly(ReturnStatement that)
           
 TypeData ExpressionTypeChecker.forShiftAssignmentExpressionOnly(ShiftAssignmentExpression that, TypeData nameRes, TypeData valueRes)
          Not currently supported.
 TypeData ExpressionTypeChecker.forShiftBinaryExpressionOnly(ShiftBinaryExpression that, TypeData left_result, TypeData right_result)
          Not currently supported
 TypeData ExpressionTypeChecker.forSimpleAnonymousClassInstantiation(SimpleAnonymousClassInstantiation that)
          Resolve the type of this anonymous class.
 TypeData ExpressionTypeChecker.forSimpleAssignmentExpression(SimpleAssignmentExpression that)
          Visit the lhs of this assignment with LValueTypeChecker, which does extra checking.
 TypeData ExpressionTypeChecker.forSimpleAssignmentExpressionOnly(SimpleAssignmentExpression that, TypeData nameRes, TypeData valueRes)
          A SimpleAssignmentExpression is okay if both lhs and rhs are instances, and rhs is assignable to lhs.
 TypeData ExpressionTypeChecker.forSimpleInitializedArrayInstantiation(SimpleInitializedArrayInstantiation that)
          Lookup the type of the array instantiation, and if there are any errors with it, give them.
 TypeData ExpressionTypeChecker.forSimpleMethodInvocation(SimpleMethodInvocation that)
          Tries to match this method invocation to a method in the context.
 TypeData ExpressionTypeChecker.forSimpleNamedClassInstantiation(SimpleNamedClassInstantiation that)
          Handles a simple class instantiation.
 TypeData ExpressionTypeChecker.forSimpleNameReference(SimpleNameReference that)
          Try to resolve this SimpleNameReference.
 TypeData ExpressionTypeChecker.forSimpleSuperReference(SimpleSuperReference that)
          All classes should have a super class, which is java.lang.Object by default.
 TypeData BodyTypeChecker.forSimpleSuperReferenceOnly(SimpleSuperReference that)
           
 TypeData ExpressionTypeChecker.forSimpleThisConstructorInvocation(SimpleThisConstructorInvocation that)
          SimpleThisConstructorInvocations are not allowed outside of the first line of a constructor.
 TypeData ExpressionTypeChecker.forSimpleThisReference(SimpleThisReference that)
          Make sure we are in a non-static context.
 TypeData BodyTypeChecker.forSimpleThisReferenceOnly(SimpleThisReference that)
           
 TypeData ExpressionTypeChecker.forSimpleUninitializedArrayInstantiation(SimpleUninitializedArrayInstantiation that)
          Resolve the type of the array and visit its dimensions.
 TypeData SpecialTypeChecker.forStaticInitializer(StaticInitializer that)
           
 TypeData TypeChecker.forStaticInitializerOnly(StaticInitializer that, TypeData codeRes)
           
 TypeData ExpressionTypeChecker.forStringLiteralOnly(StringLiteral that)
           
 TypeData BodyTypeChecker.forSwitchCase(SwitchCase that)
          Visit the Braced Body of this SwitchCase, and return the result.
 TypeData BodyTypeChecker.forSwitchStatement(SwitchStatement that)
           
 TypeData TypeChecker.forSwitchStatementOnly(SwitchStatement that, TypeData testRes, TypeData[] casesRes)
           
 TypeData BodyTypeChecker.forSwitchStatementOnly(SwitchStatement that, TypeData testRes, TypeData[] cases_result, boolean sawDefault)
          Here, we follow the following rules for determining what to return: If there is not a default block, the statement does not return.
 TypeData SpecialTypeChecker.forSynchronizedStatement(SynchronizedStatement that)
           
 TypeData SpecialTypeChecker.forThrowStatement(ThrowStatement that)
          Visit the ThrowStatement's expression to determine what type of Exception is being thrown.
 TypeData SpecialTypeChecker.forThrowStatementOnly(ThrowStatement that, TypeData thrown_result)
          Make sure that what is being thrown is an instantiation of a class, not a class name, and that it extends Throwable.
 TypeData BodyTypeChecker.forTryCatchFinallyStatement(TryCatchFinallyStatement that)
           
 TypeData BodyTypeChecker.forTryCatchFinallyStatementOnly(TryCatchFinallyStatement that, TypeData tryBlockRes, TypeData[] catchBlocksRes, TypeData finallyBlock_result)
          Assumes that tryBlockRes, catchBlocksRes, and finallyBlock_result are InstanceDatas.
 TypeData TypeChecker.forTryCatchStatementOnly(TryCatchStatement that, TypeData tryBlockRes, TypeData[] catchBlocksRes)
           
 TypeData InterfaceBodyTypeChecker.forTypeOnly(Type that)
          Try to resolve the type that is referenced.
 TypeData BodyTypeChecker.forTypeOnly(Type that)
           
 TypeData ClassBodyTypeChecker.forTypeOnly(Type that)
           
 TypeData SpecialTypeChecker.forUnbracedBody(UnbracedBody that)
          Delegate to forBody
 TypeData BodyTypeChecker.forUnbracedBodyOnly(UnbracedBody that, TypeData[] items_result)
          Delegates to forBodyOnly.
 TypeData ExpressionTypeChecker.forUninitializedArrayInstantiationOnly(UninitializedArrayInstantiation that, TypeData typeRes, TypeData[] dimensions_result)
          Make sure the dimensions of the array instantiation are all instances and subtypes of int, and then return an instance of the array.
 TypeData InterfaceBodyTypeChecker.forUninitializedVariableDeclarator(UninitializedVariableDeclarator that)
          All fields in interfaces must be initialized where they are declared, so throw an error.
 TypeData SpecialTypeChecker.forUninitializedVariableDeclarator(UninitializedVariableDeclarator that)
          If this VariableDeclarator is uninitialized, make sure its type can be resolved and visit its name.
 TypeData BodyTypeChecker.forUninitializedVariableDeclaratorOnly(UninitializedVariableDeclarator that, TypeData typeRes, TypeData nameRes)
          We need to do this so that expressions (which should only occur in variable initializers and initializer blocks) can know which fields have already been declared.
 TypeData ClassBodyTypeChecker.forUninitializedVariableDeclaratorOnly(UninitializedVariableDeclarator that, TypeData typeRes, TypeData nameRes)
          We need to do this so that expressions (which should only occur in variable initializers and initializer blocks) can know which fields have already been declared
 TypeData BodyTypeChecker.forValueReturnStatement(ValueReturnStatement that)
          Visit the value being returned to determine its type.
 TypeData BodyTypeChecker.forValueReturnStatementOnly(ValueReturnStatement that, TypeData valueRes)
          Make sure that the enclosing method is declared to throw the same type as the return statement is trying to return.
 TypeData ConstructorBodyTypeChecker.forValueReturnStatementOnly(ValueReturnStatement that, TypeData valueRes)
          Throw an error and return null, becuase constructors cannot have value return statements in their bodies.
 TypeData SpecialTypeChecker.forVariableDeclaration(VariableDeclaration that)
          Visit each of the declarators of this declaration.
 TypeData BodyTypeChecker.forVoidReturnStatementOnly(VoidReturnStatement that)
          Make sure the enclosing method data is declared to return void.
 TypeData ConstructorBodyTypeChecker.forVoidReturnStatementOnly(VoidReturnStatement that)
          Void return statements are allowed in constructor bodies, since according to java, constructors are void return methods.
 TypeData BodyTypeChecker.forWhileStatement(WhileStatement that)
          First, visit the condition expression of the while statement with a special visitor that makes sure no assignment is done.
 TypeData BodyTypeChecker.forWhileStatementOnly(WhileStatement that, TypeData condition_result, TypeData codeRes)
          Make sure that the condition statement of the while returns type boolean.
protected  TypeData[] TypeChecker.makeArrayOfRetType(int len)
          Return a TypeData array of the specified size.
 TypeData ExpressionTypeChecker.methodInvocationHelper(MethodInvocation that, TypeData context)
          Look up the method called in the method invocation within the context of the context TypeData.
 TypeData ConstructorBodyTypeChecker.simpleSuperConstructorInvocationAllowed(SimpleSuperConstructorInvocation that)
          This is used in the case where a simple super constructor invocation is allowed i.e.
 TypeData ConstructorBodyTypeChecker.simpleThisConstructorInvocationAllowed(SimpleThisConstructorInvocation that)
          This is used in the case where a simple this constructor invocation is allowed.
 

Methods in edu.rice.cs.javalanglevels with parameters of type TypeData
 boolean TypeChecker.assertFound(TypeData type, JExpressionIF expression)
          If type is a PackageData, then it could not be resolved.
 boolean TypeChecker.assertInstanceType(TypeData type, String errorMsg, JExpression expression)
          Return true iff type is an instance type.
protected  SymbolData SpecialTypeChecker.findClassReference(TypeData lhs, String namePiece, JExpression jexpr)
          Return the symbol data corresponding to the lhs and the namePiece, if possible.
 TypeData ExpressionTypeChecker.forArrayAccessOnly(ArrayAccess that, TypeData lhs, TypeData index)
          Make sure the lhs is actually an array type and that the index is an int.
 TypeData ExpressionTypeChecker.forBitwiseAssignmentExpressionOnly(BitwiseAssignmentExpression that, TypeData nameRes, TypeData valueRes)
          Not currently supported.
 TypeData ExpressionTypeChecker.forBitwiseBinaryExpressionOnly(BitwiseBinaryExpression that, TypeData left_result, TypeData right_result)
          Not currently supported.
 TypeData ExpressionTypeChecker.forBitwiseNotExpressionOnly(BitwiseNotExpression that, TypeData valueRes)
          Not Currently Supported.
 TypeData TypeChecker.forBlockOnly(Block that, TypeData[] statementsRes)
           
 TypeData BodyTypeChecker.forBodyOnly(Body that, TypeData[] items_result)
          Look at the result of each item in the body.
 TypeData ExpressionTypeChecker.forBooleanExpressionOnly(BooleanExpression that, TypeData left_result, TypeData right_result)
          Checks if this BooleanExpression is well-formed, i.e., that left and right arguments are well-formed boolean expressions.
 TypeData BodyTypeChecker.forBracedBodyOnly(BracedBody that, TypeData[] items_result)
          Delegates to forBodyOnly.
 TypeData ExpressionTypeChecker.forCastExpressionOnly(CastExpression that, TypeData typeRes, TypeData valueRes)
          Checks to see if this CastExpression is okay.
 TypeData BodyTypeChecker.forCatchBlockOnly(CatchBlock that, SymbolData exception_result, TypeData block_result)
           
 TypeData TypeChecker.forClassDefOnly(ClassDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParametersRes, TypeData superRes, TypeData[] interfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forClassDefOnly(ClassDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParametersRes, TypeData superRes, TypeData[] interfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forClassDefOnly(ClassDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParametersRes, TypeData superRes, TypeData[] interfacesRes, TypeData bodyRes)
           
 TypeData ExpressionTypeChecker.forComparisonExpressionOnly(ComparisonExpression that, TypeData left_result, TypeData right_result)
          Verify that both the left and right of this comparison expression are number types and InstanceDatas.
 TypeData ExpressionTypeChecker.forComplexSuperReferenceOnly(ComplexSuperReference that, TypeData enclosing_result)
          Makes sure that the enclosing result is not null--if it is, return null.
 TypeData ExpressionTypeChecker.forComplexThisReferenceOnly(ComplexThisReference that, TypeData enclosing_result)
          Check to make sure that the enclosing result could be resolved and that it a type name.
 TypeData TypeChecker.forConcreteMethodDefOnly(ConcreteMethodDef that, TypeData mavRes, TypeData[] typeParamsRes, TypeData resRes, TypeData nameRes, TypeData paramsRes, TypeData[] throwsRes, TypeData bodyRes)
           
 TypeData TypeChecker.forConcreteMethodDefOnly(ConcreteMethodDef that, TypeData mavRes, TypeData[] typeParamsRes, TypeData resRes, TypeData nameRes, TypeData paramsRes, TypeData[] throwsRes, TypeData bodyRes)
           
 TypeData TypeChecker.forConcreteMethodDefOnly(ConcreteMethodDef that, TypeData mavRes, TypeData[] typeParamsRes, TypeData resRes, TypeData nameRes, TypeData paramsRes, TypeData[] throwsRes, TypeData bodyRes)
           
 TypeData ExpressionTypeChecker.forConditionalExpressionOnly(ConditionalExpression that, TypeData condition_result, TypeData forTrue_result, TypeData forFalse_result)
          Not currently supported
 TypeData ClassBodyTypeChecker.forConstructorDefOnly(ConstructorDef that, TypeData mavRes, TypeData[] parameters_result, TypeData[] throwsRes, TypeData bodyRes)
           
 TypeData ClassBodyTypeChecker.forConstructorDefOnly(ConstructorDef that, TypeData mavRes, TypeData[] parameters_result, TypeData[] throwsRes, TypeData bodyRes)
           
 TypeData ClassBodyTypeChecker.forConstructorDefOnly(ConstructorDef that, TypeData mavRes, TypeData[] parameters_result, TypeData[] throwsRes, TypeData bodyRes)
           
 TypeData BodyTypeChecker.forDoStatementOnly(DoStatement that, TypeData codeRes, TypeData condition_result)
          Make sure that the condition statement of the while returns type boolean.
 TypeData ExpressionTypeChecker.forEqualityExpressionOnly(EqualityExpression that, TypeData left_result, TypeData right_result)
          This EqualityExpression is badly formed if left_result and right_result have incompatible types.
 TypeData TypeChecker.forExpressionStatementOnly(ExpressionStatement that, TypeData exprRes)
           
 TypeData BodyTypeChecker.forForStatementOnly(ForStatement that, TypeData init_result, TypeData condition_result, TypeData update_result, TypeData codeRes)
           
 TypeData BodyTypeChecker.forIfThenElseStatementOnly(IfThenElseStatement that, TypeData testExpression_result, TypeData thenStatement_result, TypeData elseStatement_result)
          Make sure that the conditional expression has the right type, and if both branches of the if/else return, return a value the common super type of the two return types.
 TypeData BodyTypeChecker.forIfThenStatementOnly(IfThenStatement that, TypeData testExpression_result, TypeData thenStatement_result)
           
 TypeData ExpressionTypeChecker.forIncrementExpressionOnly(IncrementExpression that, TypeData valueRes)
          An IncrementExpression is badly formatted if the thing being incremented is a type (valueRes is not an InstanceData) or if the value being incremented cannot be assigned to.
 TypeData SpecialTypeChecker.forInitializedVariableDeclaratorOnly(InitializedVariableDeclarator that, TypeData typeRes, TypeData nameRes, TypeData initializer_result)
          Makes sure that the initializedvariable declarator is correct (the types match) Also, add the Variable Data corresponding to this initializiation to the _vars list, so that it can be referenced within this scope.
 TypeData TypeChecker.forInnerClassDefOnly(InnerClassDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData superClassRes, TypeData[] interfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forInnerClassDefOnly(InnerClassDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData superClassRes, TypeData[] interfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forInnerClassDefOnly(InnerClassDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData superClassRes, TypeData[] interfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forInnerInterfaceDefOnly(InnerInterfaceDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData[] superinterfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forInnerInterfaceDefOnly(InnerInterfaceDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData[] superinterfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forInnerInterfaceDefOnly(InnerInterfaceDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData[] superinterfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forInstanceInitializerOnly(InstanceInitializer that, TypeData codeRes)
           
 TypeData ExpressionTypeChecker.forInstanceofExpressionOnly(InstanceofExpression that, TypeData typeRes, TypeData valueRes)
          Checks to see if this InstanceofExpression is okay.
 TypeData TypeChecker.forInterfaceDefOnly(InterfaceDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData[] superinterfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forInterfaceDefOnly(InterfaceDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData[] superinterfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forInterfaceDefOnly(InterfaceDef that, TypeData mavRes, TypeData nameRes, TypeData[] typeParamRes, TypeData[] superinterfacesRes, TypeData bodyRes)
           
 TypeData TypeChecker.forLabeledStatementOnly(LabeledStatement that, TypeData statementRes)
           
 TypeData TypeChecker.forMethodDefOnly(MethodDef that, TypeData mavRes, TypeData[] typeParamsRes, TypeData resRes, TypeData nameRes, TypeData paramsRes, TypeData[] throwsRes)
           
 TypeData TypeChecker.forMethodDefOnly(MethodDef that, TypeData mavRes, TypeData[] typeParamsRes, TypeData resRes, TypeData nameRes, TypeData paramsRes, TypeData[] throwsRes)
           
 TypeData TypeChecker.forMethodDefOnly(MethodDef that, TypeData mavRes, TypeData[] typeParamsRes, TypeData resRes, TypeData nameRes, TypeData paramsRes, TypeData[] throwsRes)
           
 TypeData ExpressionTypeChecker.forNoOpExpressionOnly(NoOpExpression that, TypeData left_result, TypeData right_result)
          This should have been caught in the first pass.
 TypeData BodyTypeChecker.forNormalTryCatchStatementOnly(NormalTryCatchStatement that, TypeData tryBlockRes, TypeData[] catchBlocksRes)
          Assumes that tryBlockRes, catchBlocksRes, and finallyBlock_result are InstanceDatas
 TypeData BodyTypeChecker.forNormalTryCatchStatementOnly(NormalTryCatchStatement that, TypeData tryBlockRes, TypeData[] catchBlocksRes)
          Assumes that tryBlockRes, catchBlocksRes, and finallyBlock_result are InstanceDatas
 TypeData ExpressionTypeChecker.forNotExpressionOnly(NotExpression that, TypeData valueRes)
          A NotExpression is illformed if its argument is not an instance type or its argument is not of type boolean.
 TypeData ExpressionTypeChecker.forNumericAssignmentExpressionOnly(NumericAssignmentExpression that, TypeData nameRes, TypeData valueRes)
          A NumericAssignmentExpression is okay if both the lhs and the rhs are instances, both are numbers, and the rhs is assignable to the lhs.
 TypeData ExpressionTypeChecker.forNumericBinaryExpressionOnly(NumericBinaryExpression that, TypeData left_result, TypeData right_result)
          Check if this NumericBinaryExpression was okay.
 TypeData ExpressionTypeChecker.forNumericUnaryExpressionOnly(NumericUnaryExpression that, TypeData valueRes)
          A NumericUnaryExpression was well-formed if its valueRes is an instance type and if its valueRes's symbol data is a number type (to which a double can be assigned).
 TypeData ExpressionTypeChecker.forParenthesizedOnly(Parenthesized that, TypeData valueRes)
          Check a few constraints on this Parenthesized
 TypeData ExpressionTypeChecker.forPlusAssignmentExpressionOnly(PlusAssignmentExpression that, TypeData nameRes, TypeData valueRes)
          A PlusAssignmentExpression is okay if the lhs and rhs are both instances.
 TypeData ExpressionTypeChecker.forPlusExpressionOnly(PlusExpression that, TypeData left_result, TypeData right_result)
          A plus operator can either be used on a string and any other type of object or on two numbers.
 TypeData ExpressionTypeChecker.forShiftAssignmentExpressionOnly(ShiftAssignmentExpression that, TypeData nameRes, TypeData valueRes)
          Not currently supported.
 TypeData ExpressionTypeChecker.forShiftBinaryExpressionOnly(ShiftBinaryExpression that, TypeData left_result, TypeData right_result)
          Not currently supported
 TypeData ExpressionTypeChecker.forSimpleAssignmentExpressionOnly(SimpleAssignmentExpression that, TypeData nameRes, TypeData valueRes)
          A SimpleAssignmentExpression is okay if both lhs and rhs are instances, and rhs is assignable to lhs.
 TypeData TypeChecker.forStaticInitializerOnly(StaticInitializer that, TypeData codeRes)
           
 TypeData TypeChecker.forSwitchStatementOnly(SwitchStatement that, TypeData testRes, TypeData[] casesRes)
           
 TypeData TypeChecker.forSwitchStatementOnly(SwitchStatement that, TypeData testRes, TypeData[] casesRes)
           
 TypeData BodyTypeChecker.forSwitchStatementOnly(SwitchStatement that, TypeData testRes, TypeData[] cases_result, boolean sawDefault)
          Here, we follow the following rules for determining what to return: If there is not a default block, the statement does not return.
 TypeData BodyTypeChecker.forSwitchStatementOnly(SwitchStatement that, TypeData testRes, TypeData[] cases_result, boolean sawDefault)
          Here, we follow the following rules for determining what to return: If there is not a default block, the statement does not return.
 TypeData SpecialTypeChecker.forThrowStatementOnly(ThrowStatement that, TypeData thrown_result)
          Make sure that what is being thrown is an instantiation of a class, not a class name, and that it extends Throwable.
 TypeData BodyTypeChecker.forTryCatchFinallyStatementOnly(TryCatchFinallyStatement that, TypeData tryBlockRes, TypeData[] catchBlocksRes, TypeData finallyBlock_result)
          Assumes that tryBlockRes, catchBlocksRes, and finallyBlock_result are InstanceDatas.
 TypeData BodyTypeChecker.forTryCatchFinallyStatementOnly(TryCatchFinallyStatement that, TypeData tryBlockRes, TypeData[] catchBlocksRes, TypeData finallyBlock_result)
          Assumes that tryBlockRes, catchBlocksRes, and finallyBlock_result are InstanceDatas.
 TypeData TypeChecker.forTryCatchStatementOnly(TryCatchStatement that, TypeData tryBlockRes, TypeData[] catchBlocksRes)
           
 TypeData TypeChecker.forTryCatchStatementOnly(TryCatchStatement that, TypeData tryBlockRes, TypeData[] catchBlocksRes)
           
 TypeData BodyTypeChecker.forUnbracedBodyOnly(UnbracedBody that, TypeData[] items_result)
          Delegates to forBodyOnly.
 TypeData ExpressionTypeChecker.forUninitializedArrayInstantiationOnly(UninitializedArrayInstantiation that, TypeData typeRes, TypeData[] dimensions_result)
          Make sure the dimensions of the array instantiation are all instances and subtypes of int, and then return an instance of the array.
 TypeData ExpressionTypeChecker.forUninitializedArrayInstantiationOnly(UninitializedArrayInstantiation that, TypeData typeRes, TypeData[] dimensions_result)
          Make sure the dimensions of the array instantiation are all instances and subtypes of int, and then return an instance of the array.
 TypeData BodyTypeChecker.forUninitializedVariableDeclaratorOnly(UninitializedVariableDeclarator that, TypeData typeRes, TypeData nameRes)
          We need to do this so that expressions (which should only occur in variable initializers and initializer blocks) can know which fields have already been declared.
 TypeData ClassBodyTypeChecker.forUninitializedVariableDeclaratorOnly(UninitializedVariableDeclarator that, TypeData typeRes, TypeData nameRes)
          We need to do this so that expressions (which should only occur in variable initializers and initializer blocks) can know which fields have already been declared
 TypeData BodyTypeChecker.forValueReturnStatementOnly(ValueReturnStatement that, TypeData valueRes)
          Make sure that the enclosing method is declared to throw the same type as the return statement is trying to return.
 TypeData ConstructorBodyTypeChecker.forValueReturnStatementOnly(ValueReturnStatement that, TypeData valueRes)
          Throw an error and return null, becuase constructors cannot have value return statements in their bodies.
 TypeData BodyTypeChecker.forWhileStatementOnly(WhileStatement that, TypeData condition_result, TypeData codeRes)
          Make sure that the condition statement of the while returns type boolean.
 MethodData SymbolData.getMethod(String name, TypeData[] paramTypes)
          Returns the method with the given name and param types.
protected  SymbolData LanguageLevelVisitor.getSymbolData(TypeData lhs, String name, SourceInfo si, boolean addError)
          Try to look up name from the context of the lhs.
 TypeData ExpressionTypeChecker.methodInvocationHelper(MethodInvocation that, TypeData context)
          Look up the method called in the method invocation within the context of the context TypeData.