/** * @see org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding) */ public TypeBinding substitute(TypeVariableBinding originalVariable) { ParameterizedTypeBinding currentType = this; while (true) { TypeVariableBinding[] typeVariables = currentType.type.typeVariables(); int length = typeVariables.length; // check this variable can be substituted given parameterized type if (originalVariable.rank < length && typeVariables[originalVariable.rank] == originalVariable) { // lazy init, since cannot do so during binding creation if during supertype connection if (currentType.arguments == null) currentType.initializeArguments(); // only for raw types if (currentType.arguments != null) return currentType.arguments[originalVariable.rank]; } // recurse on enclosing type, as it may hold more substitutions to perform if (currentType.isStatic()) break; ReferenceBinding enclosing = currentType.enclosingType(); if (!(enclosing instanceof ParameterizedTypeBinding)) break; currentType = (ParameterizedTypeBinding) enclosing; } return originalVariable; }
/** * @see org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding) */ public TypeBinding substitute(TypeVariableBinding originalVariable) { ParameterizedTypeBinding currentType = this; while (true) { TypeVariableBinding[] typeVariables = currentType.type.typeVariables(); int length = typeVariables.length; // check this variable can be substituted given parameterized type if (originalVariable.rank < length && typeVariables[originalVariable.rank] == originalVariable) { // lazy init, since cannot do so during binding creation if during supertype connection if (currentType.arguments == null) currentType.initializeArguments(); // only for raw types if (currentType.arguments != null) return currentType.arguments[originalVariable.rank]; } // recurse on enclosing type, as it may hold more substitutions to perform if (currentType.isStatic()) break; ReferenceBinding enclosing = currentType.enclosingType(); if (!(enclosing instanceof ParameterizedTypeBinding)) break; currentType = (ParameterizedTypeBinding) enclosing; } return originalVariable; }
/** * @see org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding) */ public TypeBinding substitute(TypeVariableBinding originalVariable) { ParameterizedTypeBinding currentType = this; while (true) { TypeVariableBinding[] typeVariables = currentType.type.typeVariables(); int length = typeVariables.length; // check this variable can be substituted given parameterized type if (originalVariable.rank < length && typeVariables[originalVariable.rank] == originalVariable) { // lazy init, since cannot do so during binding creation if during supertype connection if (currentType.arguments == null) currentType.initializeArguments(); // only for raw types if (currentType.arguments != null) { if (currentType.arguments.length == 0) { // diamond type return originalVariable; } return currentType.arguments[originalVariable.rank]; } } // recurse on enclosing type, as it may hold more substitutions to perform if (currentType.isStatic()) break; ReferenceBinding enclosing = currentType.enclosingType(); if (!(enclosing instanceof ParameterizedTypeBinding)) break; currentType = (ParameterizedTypeBinding) enclosing; } return originalVariable; }
/** * @see org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding) */ public TypeBinding substitute(TypeVariableBinding originalVariable) { ParameterizedTypeBinding currentType = this; while (true) { TypeVariableBinding[] typeVariables = currentType.type.typeVariables(); int length = typeVariables.length; // check this variable can be substituted given parameterized type if (originalVariable.rank < length && TypeBinding.equalsEquals(typeVariables[originalVariable.rank], originalVariable)) { // lazy init, since cannot do so during binding creation if during supertype connection if (currentType.arguments == null) currentType.initializeArguments(); // only for raw types if (currentType.arguments != null) { if (currentType.arguments.length == 0) { // diamond type return originalVariable; } TypeBinding substitute = currentType.arguments[originalVariable.rank]; return originalVariable.combineTypeAnnotations(substitute); } } // recurse on enclosing type, as it may hold more substitutions to perform if (currentType.isStatic()) break; ReferenceBinding enclosing = currentType.enclosingType(); if (!(enclosing instanceof ParameterizedTypeBinding)) break; currentType = (ParameterizedTypeBinding) enclosing; } return originalVariable; }
/** * @see org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding) */ public TypeBinding substitute(TypeVariableBinding originalVariable) { ParameterizedTypeBinding currentType = this; while (true) { TypeVariableBinding[] typeVariables = currentType.type.typeVariables(); int length = typeVariables.length; // check this variable can be substituted given parameterized type if (originalVariable.rank < length && TypeBinding.equalsEquals(typeVariables[originalVariable.rank], originalVariable)) { // lazy init, since cannot do so during binding creation if during supertype connection if (currentType.arguments == null) currentType.initializeArguments(); // only for raw types if (currentType.arguments != null) { if (currentType.arguments.length == 0) { // diamond type return originalVariable; } TypeBinding substitute = currentType.arguments[originalVariable.rank]; return originalVariable.combineTypeAnnotations(substitute); } } // recurse on enclosing type, as it may hold more substitutions to perform if (currentType.isStatic()) break; ReferenceBinding enclosing = currentType.enclosingType(); if (!(enclosing instanceof ParameterizedTypeBinding)) break; currentType = (ParameterizedTypeBinding) enclosing; } return originalVariable; }
currentType.initializeArguments(); // only for raw types if (currentType.arguments != null) { if (currentType.arguments.length == 0) { // diamond type
/** * @see org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding) */ public TypeBinding substitute(TypeVariableBinding originalVariable) { ParameterizedTypeBinding currentType = this; while (true) { TypeVariableBinding[] typeVariables = currentType.type.typeVariables(); int length = typeVariables.length; // check this variable can be substituted given parameterized type if (originalVariable.rank < length && TypeBinding.equalsEquals(typeVariables[originalVariable.rank], originalVariable)) { // lazy init, since cannot do so during binding creation if during supertype connection if (currentType.arguments == null) currentType.initializeArguments(); // only for raw types if (currentType.arguments != null) { if (currentType.arguments.length == 0) { // diamond type return originalVariable; } TypeBinding substitute = currentType.arguments[originalVariable.rank]; return originalVariable.combineTypeAnnotations(substitute); } } // recurse on enclosing type, as it may hold more substitutions to perform if (currentType.isStatic()) break; ReferenceBinding enclosing = currentType.enclosingType(); if (!(enclosing instanceof ParameterizedTypeBinding)) break; currentType = (ParameterizedTypeBinding) enclosing; } return originalVariable; }
/** * @see org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding) */ public TypeBinding substitute(TypeVariableBinding originalVariable) { ParameterizedTypeBinding currentType = this; while (true) { TypeVariableBinding[] typeVariables = currentType.type.typeVariables(); int length = typeVariables.length; // check this variable can be substituted given parameterized type if (originalVariable.rank < length && TypeBinding.equalsEquals(typeVariables[originalVariable.rank], originalVariable)) { // lazy init, since cannot do so during binding creation if during supertype connection if (currentType.arguments == null) currentType.initializeArguments(); // only for raw types if (currentType.arguments != null) { if (currentType.arguments.length == 0) { // diamond type return originalVariable; } TypeBinding substitute = currentType.arguments[originalVariable.rank]; return originalVariable.combineTypeAnnotations(substitute); } } // recurse on enclosing type, as it may hold more substitutions to perform if (currentType.isStatic()) break; ReferenceBinding enclosing = currentType.enclosingType(); if (!(enclosing instanceof ParameterizedTypeBinding)) break; currentType = (ParameterizedTypeBinding) enclosing; } return originalVariable; }
/** * @see org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding) */ public TypeBinding substitute(TypeVariableBinding originalVariable) { ParameterizedTypeBinding currentType = this; while (true) { TypeVariableBinding[] typeVariables = currentType.type.typeVariables(); int length = typeVariables.length; // check this variable can be substituted given parameterized type if (originalVariable.rank < length && TypeBinding.equalsEquals(typeVariables[originalVariable.rank], originalVariable)) { // lazy init, since cannot do so during binding creation if during supertype connection if (currentType.arguments == null) currentType.initializeArguments(); // only for raw types if (currentType.arguments != null) { if (currentType.arguments.length == 0) { // diamond type return originalVariable; } TypeBinding substitute = currentType.arguments[originalVariable.rank]; return originalVariable.hasTypeAnnotations() ? this.environment.createAnnotatedType(substitute, originalVariable.getTypeAnnotations()) : substitute; } } // recurse on enclosing type, as it may hold more substitutions to perform if (currentType.isStatic()) break; ReferenceBinding enclosing = currentType.enclosingType(); if (!(enclosing instanceof ParameterizedTypeBinding)) break; currentType = (ParameterizedTypeBinding) enclosing; } return originalVariable; }
/** * @see org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding) */ public TypeBinding substitute(TypeVariableBinding originalVariable) { ParameterizedTypeBinding currentType = this; while (true) { TypeVariableBinding[] typeVariables = currentType.type.typeVariables(); int length = typeVariables.length; // check this variable can be substituted given parameterized type if (originalVariable.rank < length && TypeBinding.equalsEquals(typeVariables[originalVariable.rank], originalVariable)) { // lazy init, since cannot do so during binding creation if during supertype connection if (currentType.arguments == null) currentType.initializeArguments(); // only for raw types if (currentType.arguments != null) { if (currentType.arguments.length == 0) { // diamond type return originalVariable; } TypeBinding substitute = currentType.arguments[originalVariable.rank]; return originalVariable.hasTypeAnnotations() ? this.environment.createAnnotatedType(substitute, originalVariable.getTypeAnnotations()) : substitute; } } // recurse on enclosing type, as it may hold more substitutions to perform if (currentType.isStatic()) break; ReferenceBinding enclosing = currentType.enclosingType(); if (!(enclosing instanceof ParameterizedTypeBinding)) break; currentType = (ParameterizedTypeBinding) enclosing; } return originalVariable; }
/** * @see org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding) */ public TypeBinding substitute(TypeVariableBinding originalVariable) { ParameterizedTypeBinding currentType = this; while (true) { TypeVariableBinding[] typeVariables = currentType.type.typeVariables(); int length = typeVariables.length; // check this variable can be substituted given parameterized type if (originalVariable.rank < length && TypeBinding.equalsEquals(typeVariables[originalVariable.rank], originalVariable)) { // lazy init, since cannot do so during binding creation if during supertype connection if (currentType.arguments == null) currentType.initializeArguments(); // only for raw types if (currentType.arguments != null) { if (currentType.arguments.length == 0) { // diamond type return originalVariable; } TypeBinding substitute = currentType.arguments[originalVariable.rank]; return originalVariable.hasTypeAnnotations() ? this.environment.createAnnotatedType(substitute, originalVariable.getTypeAnnotations()) : substitute; } } // recurse on enclosing type, as it may hold more substitutions to perform if (currentType.isStatic()) break; ReferenceBinding enclosing = currentType.enclosingType(); if (!(enclosing instanceof ParameterizedTypeBinding)) break; currentType = (ParameterizedTypeBinding) enclosing; } return originalVariable; }