framework.src.org.checkerframework.qualframework.base.TypeVariableSubstitutorAdapter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of checker-qual Show documentation
Show all versions of checker-qual Show documentation
Checker Qual is the set of annotations (qualifiers) and supporting classes
used by the Checker Framework to type check Java source code. Please
see artifact:
org.checkerframework:checker
package org.checkerframework.qualframework.base;
import org.checkerframework.framework.type.*;
import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedTypeVariable;
import org.checkerframework.qualframework.base.QualifiedTypeMirror.QualifiedTypeVariable;
/**
* Adapt substitution to the Qual Framework
*/
public class TypeVariableSubstitutorAdapter extends org.checkerframework.framework.type.TypeVariableSubstitutor {
private final TypeVariableSubstitutor underlying;
private final TypeMirrorConverter converter;
public TypeVariableSubstitutorAdapter(TypeVariableSubstitutor underlying, TypeMirrorConverter converter) {
this.underlying = underlying;
this.converter = converter;
}
protected AnnotatedTypeMirror substituteTypeVariable(final AnnotatedTypeMirror argument,
final AnnotatedTypeVariable use) {
QualifiedTypeMirror qArgument = converter.getQualifiedType(argument);
QualifiedTypeVariable qUse = (QualifiedTypeVariable) converter.getQualifiedType(use.asUse());
return converter.getAnnotatedType(underlying.substituteTypeVariable(qArgument, qUse));
}
protected QualifiedTypeMirror superSubstituteTypeVariable(final QualifiedTypeMirror argument,
final QualifiedTypeVariable use) {
return converter.getQualifiedType(super.substituteTypeVariable(converter.getAnnotatedType(argument),
(AnnotatedTypeVariable)converter.getAnnotatedType(use)));
}
}