Class VarInitializationVerifier
java.lang.Object
gw.internal.gosu.parser.statements.VarInitializationVerifier
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
assignTerminalStatement
(ArrayList<AssignmentOrReference> assignments, IStatement stmt) static boolean
doStatementsTerminate
(List<? extends IStatement> statements) private IParsedElement
findBreakStatementContext
(ITerminalStatement terminal) private IParsedElement
private IParsedElement
private IStatement
private IParsedElement
findFirstEnclosing
(IParsedElement csr, Class[] classes) private List<IStatement>
findTrailingStmts
(IStatement enclosingStatement, IVarStatement finalVar) getAssignedState
(ISymbol sym, IParsedElement s, ArrayList<AssignmentOrReference> assignments, VarInitializationVerifier.AssignedState localState) getAssignedStateForStatements
(ISymbol sym, ArrayList<AssignmentOrReference> assignments, IStatement[] statements, VarInitializationVerifier.AssignedState localState) private IParsedElement
getTerminalContext
(ITerminalStatement terminal) private IParsedElement
private boolean
(package private) static boolean
isStatementContainedIn
(IParsedElement stmt, IParsedElement container) private void
markErrorsOnAssignmentsToFinal
(IVarStatement varStmt, ArrayList<AssignmentOrReference> assignments) private void
markErrorsOnBadAssignmentsAndReferences
(IVarStatement varStmt, boolean bField, boolean bFinal, ArrayList<AssignmentOrReference> assignments) private void
verifyFields
(IGosuClassInternal gsClass) 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 initializedprivate void
verifyInstanceField
(IGosuClassInternal gsClass, VarStatement varStmt) verifyInstanceFieldInConstructor
(VarStatement varStmt, boolean bAssigned, VarInitializationVerifier.AssignedState overall, DynamicFunctionSymbol dfs) private void
verifyInstanceFieldInOtherInstanceFields
(IGosuClassInternal gsClass, VarStatement varStmt) private void
verifyLocals
(IGosuClassInternal gsClass) private void
private void
verifyLocalVar
(IVarStatement varStmt) 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 initializedprivate void
verifyStaticField
(IGosuClassInternal gsClass, VarStatement varStmt) private void
verifyVar
(IVarStatement varStmt, boolean bField, boolean bFinal, boolean bAssigned, ArrayList<AssignmentOrReference> assignments)
-
Field Details
-
_bFinalOnly
private boolean _bFinalOnly
-
-
Constructor Details
-
VarInitializationVerifier
private VarInitializationVerifier(boolean bFinalOnly)
-
-
Method Details
-
isFinalOnly
private boolean isFinalOnly() -
verifyFinalFields
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
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
-
verifyLocalsRecursively
-
verifyLocalVar
-
findTrailingStmts
-
findEnclosingStatement
-
verifyFields
-
verifyInstanceField
-
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, ArrayList<AssignmentOrReference> assignments) -
markErrorsOnAssignmentsToFinal
private void markErrorsOnAssignmentsToFinal(IVarStatement varStmt, ArrayList<AssignmentOrReference> assignments) -
markErrorsOnBadAssignmentsAndReferences
private void markErrorsOnBadAssignmentsAndReferences(IVarStatement varStmt, boolean bField, boolean bFinal, ArrayList<AssignmentOrReference> assignments) -
verifyStaticField
-
getAssignedState
private VarInitializationVerifier.AssignedState getAssignedState(ISymbol sym, IParsedElement s, ArrayList<AssignmentOrReference> assignments, VarInitializationVerifier.AssignedState localState) -
doStatementsTerminate
-
getTerminalParent
-
isStatementContainedIn
-
getAssignedStateForStatements
private VarInitializationVerifier.AssignedState getAssignedStateForStatements(ISymbol sym, ArrayList<AssignmentOrReference> assignments, IStatement[] statements, VarInitializationVerifier.AssignedState localState) -
assignTerminalStatement
-
getTerminalContext
-
findEnclosingFunctionStatement
-
findContinueStatementContext
-
findBreakStatementContext
-
findFirstEnclosing
-