Package gw.internal.gosu.parser
Class GosuClassParser
- java.lang.Object
-
- gw.internal.gosu.parser.ParserBase
-
- gw.internal.gosu.parser.GosuClassParser
-
- All Implemented Interfaces:
IParserPart,ITokenizerOffsetMarker,IGosuClassParser
public class GosuClassParser extends ParserBase implements IGosuClassParser, ITokenizerOffsetMarker
-
-
Field Summary
Fields Modifier and Type Field Description private ClassStatement_classStmtprivate int_iClassColumnprivate int_iClassLineNumprivate int_iClassOffsetprivate Stack<IGosuClassInternal>_innerClassesprivate int_innerClassOffset-
Fields inherited from class gw.internal.gosu.parser.ParserBase
_bDontOptimizeStatementLists, _blocks, _offsetShift
-
-
Constructor Summary
Constructors Modifier Constructor Description GosuClassParser(GosuParser owner)privateGosuClassParser(GosuParser owner, IGosuClassInternal innerClass)
-
Method Summary
-
Methods inherited from class gw.internal.gosu.parser.ParserBase
addBlockToBlockStack, addError, addError, advanceToNextTokenSilently, captureAllSymbols, captureSymbol, copyBlockStackTo, eatBlock, eatBlock, eatOptionalSemiColon, eatParenthesized, eatPossibleArrayBrackets, eatPossibleArrayBrackets, eatPossibleEnclosedVarInStmt, eatPossibleParametarization, eatPossibleParametarization, eatPossibleStatementBlock, eatStatementBlock, eatTypeLiteral, findAndWrapLocation, findMathOpMethod, getCurrentEnclosingGosuClass, getCurrentlyInferringFunctionTypeVars, getLocationsList, getOwner, getParsingAnonymousClass, getSymbolTable, getTokenizer, getUncapturedSymbol, getValidator, isDontOptimizeStatementLists, isEvalClass, isFinalDimension, isOrIsEnclosedByAnonymousClass, isParsingBlock, isTypeVarInReifiedContext, isWordOrValueKeyword, makeFullParserState, makeFullParserStateWithSymbols, makeLazyLightweightParserState, makeLightweightParserState, match, match, match, match, match, match, matchDeclarationKeyword, parseAnnotation, parseDotPathWord, parseModifiers, parseModifiers, peekExpression, peekInferringFunctionTypeVariableTypes, peekStatement, popCurrentBlock, popExpression, popInferringFunctionTypeVariableTypes, popStatement, possiblyWrapWithCoercion, possiblyWrapWithImplicitCoercion, pushCurrentBlock, pushExpression, pushInferringFunctionTypeVars, pushModifierList, pushStatement, resolveNamespace, resolveNamespaceSymbol, resolveRuntimeType, resolveSymbol, resolveType, resolveType, resolveTypeForArithmeticExpression, setBlocks, setDontOptimizeStatementLists, setIgnoreWarnings, setLineNumShift, setLocation, setLocation, setLocation, setLocationForImplicitTypeAs, setOffsetShift, setOwner, setSnapshotSymbols, setSubTree, setValidator, shouldSnapshotSymbols, verify, verify, verify, verify, verify, verify, verifyAnnotations, verifyComparable, verifyComparable, verifyComparable, verifyModifiers, verifyModifiersForFeature, verifyNoAbstractHideOverrideModifierDefined, verifyNoAbstractHideOverrideStaticModifierDefined, verifyNoAbstractHideOverrideStaticModifierDefined, verifyNoAbstractHideStaticModifierDefined, verifyNoAccessibilityModifierDefined, verifyNoCombinedFinalPrivateModifierDefined, verifyNoCombinedFinalStaticModifierDefined, verifyNoCombinedPrivateAbstract, verifyNoHideOverrideModifierDefined, verifyNoHideOverrideStaticModifierDefined, verifyNonVoidExpression, verifyOrWarn, verifyParsedElement, verifyParsedElement, verifyTypesComparable, verifyTypesComparable, verifyTypeVarAreReified, warn, warn
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface gw.lang.parser.IParserPart
getOwner, isDontOptimizeStatementLists, setDontOptimizeStatementLists, setLineNumShift, setValidator
-
-
-
-
Field Detail
-
_iClassOffset
private int _iClassOffset
-
_iClassLineNum
private int _iClassLineNum
-
_iClassColumn
private int _iClassColumn
-
_classStmt
private ClassStatement _classStmt
-
_innerClasses
private Stack<IGosuClassInternal> _innerClasses
-
_innerClassOffset
private int _innerClassOffset
-
-
Constructor Detail
-
GosuClassParser
public GosuClassParser(GosuParser owner)
-
GosuClassParser
private GosuClassParser(GosuParser owner, IGosuClassInternal innerClass)
-
-
Method Detail
-
parseAnonymousInnerClass
public static void parseAnonymousInnerClass(GosuParser gosuParser, IGosuClassInternal innerGsClass)
-
getScript
protected java.lang.String getScript()
- Specified by:
getScriptin classParserBase
-
getLineNumShift
public int getLineNumShift()
- Specified by:
getLineNumShiftin interfaceIParserPart- Overrides:
getLineNumShiftin classParserBase
-
getOffsetShift
public int getOffsetShift()
- Specified by:
getOffsetShiftin interfaceIParserPart- Overrides:
getOffsetShiftin classParserBase
-
getOffsetMark
public int getOffsetMark()
- Specified by:
getOffsetMarkin interfaceITokenizerOffsetMarker
-
getClassStatement
public ClassStatement getClassStatement()
- Overrides:
getClassStatementin classParserBase
-
setClassStatement
private void setClassStatement(ClassStatement classStmt)
-
getCurrentInnerClass
private IGosuClassInternal getCurrentInnerClass()
-
pushInnerClass
private void pushInnerClass(IGosuClassInternal gsInnerClass)
-
popInnerClass
private IGosuClassInternal popInnerClass(IGosuClassInternal gsInnerClass)
-
isInnerClassesEmpty
private boolean isInnerClassesEmpty()
-
parseDeclarations
public void parseDeclarations(IGosuClass gsCls)
Parses all declarations including:
- Fields
- Methods
- Properties
- Inner types, recursively
- Specified by:
parseDeclarationsin interfaceIGosuClassParser
-
makeFailureException
private GosuCompilationFailure makeFailureException(java.lang.Exception e, IGosuClassInternal gsClass)
For diagnostics, wrap cause and indicate parser phase, compiling class name, and position at the time of failure.
-
isTopLevelClass
private boolean isTopLevelClass(IGosuClassInternal gsClass)
-
parseDefinitions
public void parseDefinitions(IGosuClass gsCls)
- Specified by:
parseDefinitionsin interfaceIGosuClassParser
-
postDefinitionVerify
private void postDefinitionVerify(IClassStatement classStmt)
-
removeInnerClassDelcarationsFromLocationsList
private void removeInnerClassDelcarationsFromLocationsList(IGosuClassInternal gsClass)
-
consumeTrailingTokens
private void consumeTrailingTokens()
-
assignTokens
private void assignTokens(ClassStatement classStmt)
-
buildInconsistentParseErrorMessage
private java.lang.String buildInconsistentParseErrorMessage(java.lang.String strSource, java.lang.String strTextFromParseTree, int[] diff)
-
getDiffOffset
private int[] getDiffOffset(java.lang.String strSource, java.lang.String strTextFromParseTree)
-
clearParseTree
private void clearParseTree(IGosuClassInternal gsClass)
-
isInnerClass
private boolean isInnerClass(IGosuClassInternal gsClass)
-
parseExecutableProgramStatements
private FunctionStatement parseExecutableProgramStatements(IGosuProgramInternal gsClass)
-
removeRedundantUsesStatementList
private void removeRedundantUsesStatementList(java.util.List newLocations)
-
makeExprRootFunction
private void makeExprRootFunction(IGosuProgramInternal gsClass, FunctionStatement callableStmt)
-
makeReturnStatementWithExprRoot
private StatementList makeReturnStatementWithExprRoot(IGosuProgramInternal gsClass, FunctionStatement callableStmt)
-
getProgramRootExprValueDfs
private DynamicFunctionSymbol getProgramRootExprValueDfs()
-
parseProgramAsFunctionStatement
private FunctionStatement parseProgramAsFunctionStatement(IGosuClassInternal gsClass)
-
parseClassBodyDecl
private void parseClassBodyDecl(java.lang.String strClassName, IGosuClassInternal gsClass)
-
maybeForceRecursiveTypeToAssignSuperTypes
private void maybeForceRecursiveTypeToAssignSuperTypes(IGosuClassInternal gsClass)
-
putClassMembersOfSuperAndInterfaces
private boolean putClassMembersOfSuperAndInterfaces(IGosuClassInternal gsClass)
-
putClassMembers
private boolean putClassMembers(IType type)
-
parseDeclarationsOfLeftOverInnerClasses
private boolean parseDeclarationsOfLeftOverInnerClasses(IGosuClassInternal gsClass)
-
addAutomaticEnumMethodsAndProperties
private void addAutomaticEnumMethodsAndProperties(IGosuClassInternal gsClass)
-
addEnumProperty
private void addEnumProperty(IGosuClassInternal gsClass, DynamicPropertySymbol dps)
-
processEnumConstants
private void processEnumConstants(IGosuClassInternal gsClass)
-
parseEnumConstantDecl
private VarStatement parseEnumConstantDecl(VarStatement varStmt, java.lang.String strIdentifier, ModifierInfo modifiers)
-
processVarStmt
private void processVarStmt(IGosuClassInternal gsClass, VarStatement varStmt)
-
processFunctionSymbol
public void processFunctionSymbol(DynamicFunctionSymbol dfs, IGosuClassInternal gsClass)
-
processPropertySymbol
void processPropertySymbol(DynamicPropertySymbol dps, ICompilableTypeInternal gsClass)
-
addOuterMember
private void addOuterMember(ICompilableTypeInternal gsClass)
-
parseEnhancementBodyDecl
private void parseEnhancementBodyDecl(IGosuClassInternal gsClass)
-
resolveFunctionAndPropertyDecls
public java.util.List<ParseException> resolveFunctionAndPropertyDecls(ISymbolTable table)
- Specified by:
resolveFunctionAndPropertyDeclsin interfaceIGosuClassParser
-
parseFunctionDeclForEnhancement
private java.lang.Object parseFunctionDeclForEnhancement(IGosuClassInternal gsClass)
-
_parseFunctionDeclForEnhancement
private java.lang.Object _parseFunctionDeclForEnhancement(IGosuClassInternal gsClass, int[] location)
-
parseClassStatementAsEnhancement
private void parseClassStatementAsEnhancement(IGosuClassInternal gsClass)
-
addDeclaredNameParseError
void addDeclaredNameParseError(IParsedElementWithAtLeastOneDeclaration stmt, ResourceKey key, java.lang.Object... args)
-
addDeclaredNameParseWarning
void addDeclaredNameParseWarning(IParsedElementWithAtLeastOneDeclaration stmt, ResourceKey key, java.lang.Object... args)
-
overridesMethodWithDefaultParams
private boolean overridesMethodWithDefaultParams(FunctionStatement func, ITypeInfo typeInfo)
-
featureIsOwnedByEnhancement
private boolean featureIsOwnedByEnhancement(IGosuClass enhancement, IFeatureInfo iMethodInfo)
-
parseHeader
java.lang.String parseHeader(IGosuClassInternal gsClass, boolean bParseEnhancementOnly, boolean bIsAnonymous, boolean bResolveUsesTypes)
-
restoreTypeVars
private void restoreTypeVars(java.util.HashMap<java.lang.String,ITypeVariableDefinition> typeVariablesCopy)
-
pushScopeIfNeeded
private boolean pushScopeIfNeeded(IGosuClassInternal gsClass)
-
popScopeIfNeeded
private void popScopeIfNeeded(boolean bPop, IGosuClass gsClass)
-
setTokenizerToClassStart
private void setTokenizerToClassStart()
-
parseAnonymousClassHeader
private ClassType parseAnonymousClassHeader(IGosuClassInternal gsClass)
-
goToPosition
private boolean goToPosition(int iOffset)
-
parseClassTypeForHeader
private ClassType parseClassTypeForHeader(IGosuClassInternal gsClass)
-
parseClassType
private ClassType parseClassType(IGosuClassInternal gsClass, boolean bSetModifiers)
-
parseModifiersForClass
private ModifierInfo parseModifiersForClass(IGosuClassInternal gsClass, boolean bSetModifiers)
-
parseClassOrInterfaceHeaderSuffix
private java.lang.String parseClassOrInterfaceHeaderSuffix(IGosuClassInternal gsClass, ClassType classType, boolean bResolveTypes)
-
parseTypeVarsAndExtends
private void parseTypeVarsAndExtends(IGosuClassInternal gsClass, ClassType classType, boolean bResolveTypes, IGosuClassInternal gosuObjectInterface, boolean bAnnotation, boolean bInterface)
-
_parseTypeVarsAndExtends
private void _parseTypeVarsAndExtends(IGosuClassInternal gsClass, ClassType classType, boolean bResolveTypes, IGosuClassInternal gosuObjectInterface, boolean bAnnotation, boolean bInterface, java.util.List<TypeVariableDefinitionImpl> declTypeVars)
-
parseTypeVariableDefinitionExpressions
private java.util.List<ITypeVariableDefinitionExpression> parseTypeVariableDefinitionExpressions(IGosuClassInternal gsClass, java.util.List<TypeVariableDefinitionImpl> declTypeVars)
-
interfaceExtendsGosuObject
private boolean interfaceExtendsGosuObject(IGosuClassInternal gsClass, IGosuClassInternal gsObjectInterace)
-
getDeclTypeVars
private java.util.List<TypeVariableDefinitionImpl> getDeclTypeVars()
-
makeSyntheticClassDeclaration
private void makeSyntheticClassDeclaration(java.lang.String strClassName, boolean bProgram)
-
parseInnerClassHeaders
private void parseInnerClassHeaders(IGosuClassInternal gsClass, boolean bResolveTypes)
-
loadAllNestedInnerClasses
private void loadAllNestedInnerClasses(IGosuClassInternal gsClass)
-
getClassType
private ClassType getClassType(java.lang.String strValue)
-
advanceToClassBodyStart
private void advanceToClassBodyStart()
-
advanceToClassBodyEnd
private void advanceToClassBodyEnd()
-
loadNextInnerClass
private IGosuClassInternal loadNextInnerClass(IGosuClassInternal gsClass, ClassType classType)
-
nextIndexOfErrantDuplicateInnerClass
public int nextIndexOfErrantDuplicateInnerClass(IGosuClassInternal enclosingGsClass, IGosuClassInternal innerClass)
-
getGosuObjectInterface
private IGosuClassInternal getGosuObjectInterface()
-
parseEnhancementHeaderSuffix
private java.lang.String parseEnhancementHeaderSuffix(IGosuEnhancementInternal gsClass)
-
parseEnhancementTypeVarsAndExtends
private void parseEnhancementTypeVarsAndExtends(IGosuEnhancementInternal gsClass)
-
_parseEnhancementTypeVarsAndExtends
private void _parseEnhancementTypeVarsAndExtends(IGosuEnhancementInternal gsClass, java.util.List<TypeVariableDefinitionImpl> declTypeVars)
-
ensureEnhancedTypeUsesTypeVarsOfEnhancement
private void ensureEnhancedTypeUsesTypeVarsOfEnhancement(java.util.List<ITypeVariableDefinitionExpression> typeVarLiteralList, IType enhancedType)
-
hasTypeVar
private boolean hasTypeVar(IType type, ITypeVariableType typeVar)
-
parseProgramExtendsStatement
void parseProgramExtendsStatement(IGosuClassInternal gsClass, boolean bResolveTypes)
-
parseEnhancedOrImplementedType
private IType parseEnhancedOrImplementedType(IGosuClassInternal gsClass, boolean bExtended, java.util.List<IType> interfaces)
-
inheritsWithDifferentTypeParams
private IType[] inheritsWithDifferentTypeParams(IType superType, java.util.List<IType> interfaces, IType iface)
-
makeProxy
private void makeProxy(IGosuClassInternal gsClass, IType extendedType)
-
parseFunctionOrConstructorOrFieldDeclaration
private java.lang.Object parseFunctionOrConstructorOrFieldDeclaration(IGosuClassInternal gsClass)
-
_parseFunctionOrConstructorOrFieldDeclaration
private java.lang.Object _parseFunctionOrConstructorOrFieldDeclaration(IGosuClassInternal gsClass, int[] location)
-
parseNewPropertyDecl
private java.lang.Object parseNewPropertyDecl(boolean bGetter, boolean bSetter, ModifierInfo modifiers)
-
transferModifierInfo
private void transferModifierInfo(VarStatement varStmt, ModifierInfo modifiers, ModifierInfo varModifiers)
-
violatesRepeatable
public static boolean violatesRepeatable(java.util.List<IGosuAnnotation> annotations, IGosuAnnotation anno)
-
appliesToField
private boolean appliesToField(IGosuAnnotation anno)
-
verifySuperTypeVarVariance
private void verifySuperTypeVarVariance(ClassStatement classStatement, IType type)
-
verifyTypeVarVariance
private void verifyTypeVarVariance(Variance ctxVariance, ParsedElement elem, IType type)
-
verifyPropertiesAreSymmetric
private void verifyPropertiesAreSymmetric(boolean bGetter, DynamicFunctionSymbol newFunction, DynamicPropertySymbol propertySymbol, Statement stmt)
-
makeFunctionOrConstructorStatement
private FunctionStatement makeFunctionOrConstructorStatement(IGosuClassInternal gsClass, java.lang.String strMemberKeyword, boolean bConstructKeyword)
-
parseUntilMemberKeyword
private ModifierInfo parseUntilMemberKeyword(java.lang.String[] T, boolean bIgnoreErrors, int[] location)
-
parseUntilMemberKeyword
private ModifierInfo parseUntilMemberKeyword(java.lang.String[] T, boolean bIgnoreErrors, int iEnd, int[] location)
-
parseUntilMemberKeyword
private ModifierInfo parseUntilMemberKeyword(java.lang.String[] T, boolean bIgnoreErrors, int iEnd, int[] location, int[] mark)
-
popModifierList
private void popModifierList()
-
parseInnerClassDeclaration
private void parseInnerClassDeclaration()
-
parseInnerClassDeclaration
private void parseInnerClassDeclaration(IGosuClassInternal innerClass)
-
copyDFSDecls
private static java.util.Map<java.lang.String,java.util.List<IFunctionSymbol>> copyDFSDecls(GosuParser owner)
-
parseFieldDecl
private VarStatement parseFieldDecl(ModifierInfo modifiers)
-
checkForEnumConflict
private void checkForEnumConflict(VarStatement varStmt, java.lang.String identifier)
-
parseDelegateDecl
private VarStatement parseDelegateDecl(ModifierInfo modifiers, IGosuClassInternal gsClass)
-
setStatic
private void setStatic(boolean bStatic, DynamicPropertySymbol dpsVarProperty)
-
parseClassStatement
boolean parseClassStatement()
-
ensureInheritedMethodsDoNotClash
private void ensureInheritedMethodsDoNotClash(IGosuClassInternal gsClass)
-
inheritsFromTwoOrMoreTypes
private boolean inheritsFromTwoOrMoreTypes(IGosuClassInternal gsClass)
-
ensureAbstractMethodsImpledAndNoDiamonds
private void ensureAbstractMethodsImpledAndNoDiamonds(IGosuClassInternal gsClass)
-
conflictsWithUnrelatedIfaceMethod
private boolean conflictsWithUnrelatedIfaceMethod(IGosuClassInternal gsClass, IFunctionType ft, java.util.List<IFunctionType> unimpled)
-
parseClassMembers
private void parseClassMembers(IGosuClassInternal gsClass)
-
isDeprecated
private boolean isDeprecated(ModifierInfo modifiers)
-
isOldStyleConstructor
private boolean isOldStyleConstructor(IGosuClassInternal gsClass, Token t)
-
makeClassScopeCache
private ClassScopeCache makeClassScopeCache(IGosuClassInternal gsClass)
-
putTypeUsesMapFeatures
static void putTypeUsesMapFeatures(GosuParser owner, ISymbolTable table, IGosuClassInternal gsContextClass)
-
popClassSymbols
private void popClassSymbols()
-
pushClassSymbols
private void pushClassSymbols(boolean bStatic, ClassScopeCache classScopeCache)
-
removeInitializerIfInProgram
private void removeInitializerIfInProgram(VarStatement varStmt)
-
parseInnerClassDefinition
private IGosuClassInternal parseInnerClassDefinition(Token t)
-
parseEnumConstants
private void parseEnumConstants(IGosuClassInternal gsClass, ClassScopeCache scopeCache)
-
parseEnumConstant
private void parseEnumConstant(java.lang.String strIdentifier, ClassScopeCache scopeCache, boolean bIsDuplicate)
-
parseFieldDefn
private VarStatement parseFieldDefn(IGosuClassInternal gsClass, boolean bStatic, ClassScopeCache scopeCache, ModifierInfo modifiers)
-
updateAnnotationExpressions
private void updateAnnotationExpressions(VarStatement varStmt, java.util.List<IGosuAnnotation> defnAnnotations)
-
parseNewPropertyDefn
private VarStatement parseNewPropertyDefn(IGosuClassInternal gsClass, boolean bStatic, ClassScopeCache scopeCache, boolean bGetter, boolean bSetter, ModifierInfo modifiers)
-
verifyTypeVarVariance
private void verifyTypeVarVariance(VarStatement varStmt, DynamicPropertySymbol dps)
-
findLocalInOuters
private ISymbol findLocalInOuters(java.lang.String strIdentifier)
-
findMemberField
private VarStatement findMemberField(IGosuClassInternal gsClass, java.lang.String name)
-
findStaticMemberField
private VarStatement findStaticMemberField(IGosuClassInternal gsClass, java.lang.String name)
-
assignPossibleDuplicateField
private VarStatement assignPossibleDuplicateField(java.lang.String name, java.util.Map<java.lang.String,VarStatement> fields)
-
assignPossibleDuplicateField
VarStatement assignPossibleDuplicateField(java.lang.String name, VarStatement varStmt, java.util.Map<java.lang.String,VarStatement> map)
-
parseDelegateDefn
private DelegateStatement parseDelegateDefn(IGosuClassInternal gsClass, ClassScopeCache scopeCache, ModifierInfo modifiers)
-
getOrCreateDynamicPropertySymbol
DynamicPropertySymbol getOrCreateDynamicPropertySymbol(ParsedElement parsedElement, ICompilableTypeInternal gsClass, DynamicFunctionSymbol dfs, boolean bGetter)
-
parseBaseConstructorDefinition
private FunctionStatement parseBaseConstructorDefinition(boolean bConstructor, java.util.List<IGosuAnnotation> defnAnnotations, ClassScopeCache scopeCache)
-
verifyCallSiteCtorImpled
private boolean verifyCallSiteCtorImpled(FunctionStatement functionStmt, java.util.List<? extends IConstructorInfo> declaredConstructors)
-
findConstructorFunction
private DynamicFunctionSymbol findConstructorFunction(IGosuClassInternal gsClass, java.lang.String signatureName)
-
putSuperAndThisConstructorSymbols
private void putSuperAndThisConstructorSymbols()
Alias super's ctors and this class's ctors as super(xxx) and this(xxx).
-
isCyclicInheritance
private boolean isCyclicInheritance(IType superType, IGosuClassInternal gsClass)
-
isCyclicInterfaceInheritance
private boolean isCyclicInterfaceInheritance(IGosuClassInternal gsExtendee, IGosuClass gsExtendor)
-
getGosuClass
IGosuClassInternal getGosuClass()
- Overrides:
getGosuClassin classParserBase
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-