protected GosuParser getOrCreateParser(CompiledGosuClassSymbolTable symbolTable) { if( _parser != null ){ return _parser; } else { GosuParser parser = createParser(symbolTable); if (ExecutionMode.isIDE()) { _parser = parser; } return parser; } }
public IJavaClassInfo getJavaClassInfo( Class aClass, IModule gosuModule ) { if( ExecutionMode.isIDE() && _module != TypeSystem.getJreModule() && _module.equals( TypeSystem.getGlobalModule() ) ) { return null; } String fullyQualifiedName = aClass.getName().replace('$', '.'); IJavaClassInfo result = _classInfoCache.get( fullyQualifiedName ); if( result == null ) { result = new ClassJavaClassInfo( aClass, gosuModule ); _classInfoCache.put( fullyQualifiedName, result ); } return result == IJavaClassInfo.NULL_TYPE ? null : result; }
public IJavaClassInfo getJavaClassInfo( AsmClass aClass, IModule gosuModule ) { if (ExecutionMode.isIDE() && _module != TypeSystem.getJreModule() && _module.equals( TypeSystem.getGlobalModule() )) { return null; } else { String fullyQualifiedName = aClass.getName().replace('$', '.'); IJavaClassInfo result = _classInfoCache.get( fullyQualifiedName ); if( result == null ) { result = new AsmClassJavaClassInfo( aClass, gosuModule ); _classInfoCache.put( fullyQualifiedName, result ); } return result == IJavaClassInfo.NULL_TYPE ? null : result; } }
public IModule getModule(String strModuleName) { for (IModule m : _modules) { if (m.getName().equals(strModuleName)) { return m; } } if( !ExecutionMode.isIDE() && GLOBAL_MODULE_NAME.equals( strModuleName ) || TypeSystem.getJreModule() == TypeSystem.getGlobalModule() ) { return getGlobalModule(); } return null; }
/** * @return The module responsible for resolving JRE core classes e.g., * java.lang.* etc. Note in default single module environment this is * the single module, otherwise this is the module create by calling createJreModule(). * This method will never return null but it will throw an NPE if the JRE module is null. */ public IModule getJreModule() { if (_jreModule == null) { if (!ExecutionMode.isIDE() || TypeSystem.getJreModule() == TypeSystem.getGlobalModule()) { _jreModule = getGlobalModule(); } else { throw new RuntimeException("The JRE module was not created. Please create it before trying to get it."); } } return _jreModule; }
public Module getCurrentModule() { if( !ExecutionMode.isIDE() ) { return (Module)TypeSystem.getGlobalModule(); } ArrayList list = (ArrayList)g_moduleStack.get(); if( list != null && !list.isEmpty() ) { return (Module)list.get(list.size() - 1); } if( ExecutionEnvironment.getAll().size() == 1 ) { if( TypeSystem.getGlobalModule() instanceof DefaultSingleModule ) { // For single module IDE return (Module)TypeSystem.getGlobalModule(); } } return null; //throw new RuntimeException("Current module should never be null"); }
public IJavaClassInfo getJavaClassInfo(String fullyQualifiedName) { if (fullyQualifiedName.startsWith("[")) { throw new IllegalArgumentException("Cannot call getJavaClassInfo with a raw array descriptor"); } if (ExecutionMode.isIDE() && _module != TypeSystem.getJreModule() && _module.equals(TypeSystem.getGlobalModule())) { return null; } // strip off all trailing array brackets "[]" String fqnNoArrays = ModuleTypeLoader.stripArrayBrackets(fullyQualifiedName); IJavaClassInfo result = _classInfoCache.get(fqnNoArrays); if (result == null) { result = resolveJavaClassInfo(fqnNoArrays); if (result == null) { result = IJavaClassInfo.NULL_TYPE; } _classInfoCache.put(fqnNoArrays, result); } if( result != IJavaClassType.NULL_TYPE ) { int numArrays = (fullyQualifiedName.length() - fqnNoArrays.length()) / 2; for( int i = 0; i < numArrays; i++ ) { result = result.getArrayType(); } } return result == IJavaClassInfo.NULL_TYPE ? null : result; }
public static IJavaClassInfo getClassInfo( AsmClass cls, IModule module ) { if( isProxy( cls ) ) { return getJavaClassInfo( cls, module ); } else { if( !ExecutionMode.isIDE() ) { //## todo: refine this so that a compiler, for example, could cross-compile java source with gosu source // Don't try to load from source unless we have to, this saves a load of time esp. for case // where we're loading an inner java class where replacing the '$' below with '.' we bascially // put the type system through a load of unnecessary work. IJavaClassInfo classInfo = getJavaClassInfo( cls, module ); if( classInfo != null ) { return classInfo; } } return getClassInfo( cls.getName().replace( '$', '.' ), module ); } }
if( !ExecutionMode.isIDE() && classFileExists( fqn ) )
private GosuParser makeParserForPhase() { createNewParseInfo(); CompiledGosuClassSymbolTable symbolTable = CompiledGosuClassSymbolTable.instance(); GosuParser parser = getOrCreateParser( symbolTable ); ISource source = _sourceFileHandle.getSource(); parser.setScript( source ); _parseInfo.updateSource( source.getSource() ); if( ExecutionMode.isIDE() ) { parser.setThrowParseExceptionForWarnings(true); parser.setDontOptimizeStatementLists(true); parser.setWarnOnCaseIssue(true); parser.setEditorParser(true); } assignTypeUsesMap( parser ); return parser; }
public ITypeInfo getTypeInfo() if( ExecutionMode.isIDE() && TypeSystem.getJreModule() != TypeSystem.getGlobalModule() ) {
public IGosuClassInternal parseClass( String strQualifiedClassName, ISourceFileHandle sourceFile, boolean bThrowOnWarnings, boolean bFullyCompile ) throws ParseResultsException if (!ExecutionMode.isIDE()) { classLoader = GosuClassTypeLoader.getDefaultClassLoader(TypeSystem.getGlobalModule()); } else {