Class VarInitializationVerifier
- java.lang.Object
-
- gw.internal.gosu.parser.statements.VarInitializationVerifier
-
public class VarInitializationVerifier extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classVarInitializationVerifier.AssignedState
-
Field Summary
Fields Modifier and Type Field Description private boolean_bFinalOnly
-
Constructor Summary
Constructors Modifier Constructor Description privateVarInitializationVerifier(boolean bFinalOnly)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidassignTerminalStatement(java.util.ArrayList<AssignmentOrReference> assignments, IStatement stmt)static booleandoStatementsTerminate(java.util.List<? extends IStatement> statements)private IParsedElementfindBreakStatementContext(ITerminalStatement terminal)private IParsedElementfindContinueStatementContext(ITerminalStatement terminal)private IParsedElementfindEnclosingFunctionStatement(ITerminalStatement terminal)private IStatementfindEnclosingStatement(IParsedElement pe)private IParsedElementfindFirstEnclosing(IParsedElement csr, java.lang.Class[] classes)private java.util.List<IStatement>findTrailingStmts(IStatement enclosingStatement, IVarStatement finalVar)private VarInitializationVerifier.AssignedStategetAssignedState(ISymbol sym, IParsedElement s, java.util.ArrayList<AssignmentOrReference> assignments, VarInitializationVerifier.AssignedState localState)private VarInitializationVerifier.AssignedStategetAssignedStateForStatements(ISymbol sym, java.util.ArrayList<AssignmentOrReference> assignments, IStatement[] statements, VarInitializationVerifier.AssignedState localState)private IParsedElementgetTerminalContext(ITerminalStatement terminal)private IParsedElementgetTerminalParent(IParsedElement pe)private booleanisFinalOnly()(package private) static booleanisStatementContainedIn(IParsedElement stmt, IParsedElement container)private voidmarkErrorsOnAssignmentsToFinal(IVarStatement varStmt, java.util.ArrayList<AssignmentOrReference> assignments)private voidmarkErrorsOnBadAssignmentsAndReferences(IVarStatement varStmt, boolean bField, boolean bFinal, java.util.ArrayList<AssignmentOrReference> assignments)private voidverifyFields(IGosuClassInternal gsClass)static voidverifyFinalFields(IGosuClass gsClass)Verifies initialization of final fields in the provided class and, recursively, all nested inner classes: Verifies that a final field is fully initialized either in the declaration or in the constructor[s] Verifies that an assignment to a final field is mutually exclusive wrt other assignments to the field Verifies that a reference to a final field is in a position in the source where the final field is fully initializedprivate voidverifyInstanceField(IGosuClassInternal gsClass, VarStatement varStmt)private VarInitializationVerifier.AssignedStateverifyInstanceFieldInConstructor(VarStatement varStmt, boolean bAssigned, VarInitializationVerifier.AssignedState overall, DynamicFunctionSymbol dfs)private voidverifyInstanceFieldInOtherInstanceFields(IGosuClassInternal gsClass, VarStatement varStmt)private voidverifyLocals(IGosuClassInternal gsClass)private voidverifyLocalsRecursively(IParsedElement pe)private voidverifyLocalVar(IVarStatement varStmt)static voidverifyLocalVars(IGosuClass gsClass, boolean bFinalOnly)Verifies initialization of local vars in the provided class and, recursively, all nested inner classes: Verifies that a final local var is fully initialized either in the declaration or in the scope of the var Verifies that an assignment to a final local var is mutually exclusive wrt other assignments to the var Verifies that a reference to any local var, not just finals, is in a position in the source where the var is fully initializedprivate voidverifyStaticField(IGosuClassInternal gsClass, VarStatement varStmt)private voidverifyVar(IVarStatement varStmt, boolean bField, boolean bFinal, boolean bAssigned, java.util.ArrayList<AssignmentOrReference> assignments)
-
-
-
Method Detail
-
isFinalOnly
private boolean isFinalOnly()
-
verifyFinalFields
public static void verifyFinalFields(IGosuClass gsClass)
Verifies initialization of final fields in the provided class and, recursively, all nested inner classes:- Verifies that a final field is fully initialized either in the declaration or in the constructor[s]
- Verifies that an assignment to a final field is mutually exclusive wrt other assignments to the field
- Verifies that a reference to a final field is in a position in the source where the final field is fully initialized
-
verifyLocalVars
public static void verifyLocalVars(IGosuClass gsClass, boolean bFinalOnly)
Verifies initialization of local vars in the provided class and, recursively, all nested inner classes:- Verifies that a final local var is fully initialized either in the declaration or in the scope of the var
- Verifies that an assignment to a final local var is mutually exclusive wrt other assignments to the var
- Verifies that a reference to any local var, not just finals, is in a position in the source where the var is fully initialized
-
verifyLocals
private void verifyLocals(IGosuClassInternal gsClass)
-
verifyLocalsRecursively
private void verifyLocalsRecursively(IParsedElement pe)
-
verifyLocalVar
private void verifyLocalVar(IVarStatement varStmt)
-
findTrailingStmts
private java.util.List<IStatement> findTrailingStmts(IStatement enclosingStatement, IVarStatement finalVar)
-
findEnclosingStatement
private IStatement findEnclosingStatement(IParsedElement pe)
-
verifyFields
private void verifyFields(IGosuClassInternal gsClass)
-
verifyInstanceField
private void verifyInstanceField(IGosuClassInternal gsClass, VarStatement varStmt)
-
verifyInstanceFieldInOtherInstanceFields
private void verifyInstanceFieldInOtherInstanceFields(IGosuClassInternal gsClass, VarStatement varStmt)
-
verifyInstanceFieldInConstructor
private VarInitializationVerifier.AssignedState verifyInstanceFieldInConstructor(VarStatement varStmt, boolean bAssigned, VarInitializationVerifier.AssignedState overall, DynamicFunctionSymbol dfs)
-
verifyVar
private void verifyVar(IVarStatement varStmt, boolean bField, boolean bFinal, boolean bAssigned, java.util.ArrayList<AssignmentOrReference> assignments)
-
markErrorsOnAssignmentsToFinal
private void markErrorsOnAssignmentsToFinal(IVarStatement varStmt, java.util.ArrayList<AssignmentOrReference> assignments)
-
markErrorsOnBadAssignmentsAndReferences
private void markErrorsOnBadAssignmentsAndReferences(IVarStatement varStmt, boolean bField, boolean bFinal, java.util.ArrayList<AssignmentOrReference> assignments)
-
verifyStaticField
private void verifyStaticField(IGosuClassInternal gsClass, VarStatement varStmt)
-
getAssignedState
private VarInitializationVerifier.AssignedState getAssignedState(ISymbol sym, IParsedElement s, java.util.ArrayList<AssignmentOrReference> assignments, VarInitializationVerifier.AssignedState localState)
-
doStatementsTerminate
public static boolean doStatementsTerminate(java.util.List<? extends IStatement> statements)
-
getTerminalParent
private IParsedElement getTerminalParent(IParsedElement pe)
-
isStatementContainedIn
static boolean isStatementContainedIn(IParsedElement stmt, IParsedElement container)
-
getAssignedStateForStatements
private VarInitializationVerifier.AssignedState getAssignedStateForStatements(ISymbol sym, java.util.ArrayList<AssignmentOrReference> assignments, IStatement[] statements, VarInitializationVerifier.AssignedState localState)
-
assignTerminalStatement
private void assignTerminalStatement(java.util.ArrayList<AssignmentOrReference> assignments, IStatement stmt)
-
getTerminalContext
private IParsedElement getTerminalContext(ITerminalStatement terminal)
-
findEnclosingFunctionStatement
private IParsedElement findEnclosingFunctionStatement(ITerminalStatement terminal)
-
findContinueStatementContext
private IParsedElement findContinueStatementContext(ITerminalStatement terminal)
-
findBreakStatementContext
private IParsedElement findBreakStatementContext(ITerminalStatement terminal)
-
findFirstEnclosing
private IParsedElement findFirstEnclosing(IParsedElement csr, java.lang.Class[] classes)
-
-