private IType getOuterMostEnclosingClass( IType innerClass ) { IType outerMost = innerClass; while( outerMost != null && outerMost.getEnclosingType() != null ) { outerMost = outerMost.getEnclosingType(); } return outerMost; }
private IType getOuterMostEnclosingType( IType innerClass ) { IType outerMost = innerClass; while( outerMost != null && outerMost.getEnclosingType() != null ) { outerMost = outerMost.getEnclosingType(); } return outerMost; }
private IType getNextNonBlockOuter( IType type ) { while( type instanceof IBlockClass ) { type = type.getEnclosingType(); } return type; }
private IType getOuterMostEnclosingClass( IType innerClass ) { IType outerMost = innerClass; while( outerMost != null && outerMost.getEnclosingType() != null ) { outerMost = outerMost.getEnclosingType(); } return outerMost; }
private static String getTopLevelEnclosingClassNamespace(IType type) { IType topLevelClass = type; while (topLevelClass.getEnclosingType() != null) { topLevelClass = topLevelClass.getEnclosingType(); } return topLevelClass.getNamespace(); }
private String getTopLevelTypeName( IType type ) { while( type.getEnclosingType() != null ) { type = type.getEnclosingType(); } return type.getName(); }
public boolean isProgramOrEnclosedInProgram( IType type ) { if( type == null ) { return false; } if( type instanceof IGosuProgram ) { return true; } return isProgramOrEnclosedInProgram( type.getEnclosingType() ); }
private static String getTopLevelNamespace( IType type ) { if( type.getEnclosingType() == null ) { return type.getNamespace(); } else { return getTopLevelNamespace( type.getEnclosingType() ); } }
public static IType getOuterMostEnclosingClass( IType innerClass ) { IType outerMost = innerClass; while( outerMost.getEnclosingType() != null && !isEvalProgram( outerMost ) ) { outerMost = outerMost.getEnclosingType(); if (TypeSystem.isDeleted(outerMost)) { return null; } } return outerMost; }
protected static boolean isInHierarchy(IType ownersClass, IType whosAskin) { return ownersClass.isAssignableFrom(whosAskin) || ownersClass.getEnclosingType() != null && isInHierarchy( ownersClass.getEnclosingType(), whosAskin ) || (ownersClass instanceof IGosuClass && ((IGosuClass) ownersClass).isSubClass( whosAskin )); }
private String makeEnclosingName( String strEnclosingType ) { if( getEnclosingType().getEnclosingType() != null ) { // ClassName#funcName return getEnclosingType().getEnclosingType().getName() + '#' + strEnclosingType; } return strEnclosingType; }
private static String getTopLevelTypeName( IType type ) { while( type.getEnclosingType() != null ) { type = TypeSystem.getPureGenericType( type.getEnclosingType() ); } return TypeSystem.getPureGenericType( type ).getName(); }
public static void collect(IClassStatement classStatement, DependencySink sink) { final IGosuClass klass = classStatement.getGosuClass(); if (klass instanceof IGosuEnhancement) { IType enhancedType = ((IGosuEnhancement) klass).getEnhancedType(); enhancedType = TypeSystem.getPureGenericType(enhancedType); while (enhancedType.getEnclosingType() != null) { enhancedType = enhancedType.getEnclosingType(); } sink.addType(enhancedType); } } }
private static boolean isInEvalProgram( IType gsClass ) { if( gsClass == null ) { return false; } return (gsClass instanceof IGosuProgram && ((IGosuProgram)gsClass).isAnonymous()) || isInEvalProgram( gsClass.getEnclosingType() ); }
public static boolean isInEnclosingClassHierarchy(IType ownersClass, IType whosAskin) { return whosAskin != null && ownersClass != null && (isInHierarchy(ownersClass, whosAskin) || isInEnhancedTypesHierarchy(ownersClass, whosAskin) || isInEnclosingClassHierarchy(ownersClass.getEnclosingType(), whosAskin) || isInEnclosingClassHierarchy(ownersClass, whosAskin.getEnclosingType())); }
private static boolean isInEvalProgram( IType gsClass ) { if( gsClass == null ) { return false; } return (gsClass instanceof IGosuProgram && ((IGosuProgram)gsClass).isAnonymous()) || isInEvalProgram( gsClass.getEnclosingType() ); }
default String getJavaName() { IType type = TypeSystem.getPureGenericType( this ); IType outerType = type.getEnclosingType(); if( outerType instanceof IFileRepositoryBasedType ) { return ((IFileRepositoryBasedType)outerType).getJavaName() + "$" + type.getRelativeName(); } return type.getName(); } }
private static String makeJavaName( IType type ) { IType enclosingType = type.getEnclosingType(); if( enclosingType != null ) { return makeJavaName( enclosingType ) + '$' + getSimpleName( type.getRelativeName() ); } return type.getName(); }
protected IRExpression pushOuter( IType outerTarget, IType currentOuter, IRExpression root ) { IRExpression result = root; while( !outerTarget.isAssignableFrom( currentOuter ) ) { IRMethod irMethod = IRMethodFactory.createIRMethod( currentOuter, OUTER_ACCESS, getRuntimeEnclosingType( currentOuter ), new IType[]{currentOuter}, AccessibilityUtil.forOuter(), true); result = callMethod( irMethod, null, Collections.singletonList(result)); currentOuter = maybeUnwrapProxy( currentOuter.getEnclosingType() ); } return result; }
private boolean _genericInterfacesClash( IType rhsType, IType lhsType ) { if( !rhsType.isParameterizedType() || !lhsType.isParameterizedType() ) { return false; } IType lhsTypeInRhs = TypeLord.findParameterizedType( lhsType, rhsType.getGenericType() ); if( lhsTypeInRhs != null ) { lhsTypeInRhs = TypeLord.replaceTypeVariableTypeParametersWithBoundingTypes( lhsTypeInRhs, lhsTypeInRhs.getEnclosingType() ); return !rhsType.isAssignableFrom( lhsTypeInRhs ) && !lhsTypeInRhs.isAssignableFrom( rhsType ); } return false; }