|
||||||||||
| PREV NEXT | FRAMES NO FRAMES | |||||||||
| 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. |
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES | |||||||||