本文整理了Java中com.sun.tools.javac.code.Types.erasure()
方法的一些代码示例,展示了Types.erasure()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Types.erasure()
方法的具体详情如下:
包路径:com.sun.tools.javac.code.Types
类名称:Types
方法名:erasure
[英]The erasure of t |t| -- the type that results when all type parameters in t are deleted.
[中]t | t |的擦除——删除t中的所有类型参数时产生的类型。
代码示例来源:origin: google/error-prone
/** Returns true if {@code erasure(s) == erasure(t)}. */
public static boolean isSameType(Type s, Type t, VisitorState state) {
if (s == null || t == null) {
return false;
}
Types types = state.getTypes();
return types.isSameType(types.erasure(s), types.erasure(t));
}
代码示例来源:origin: google/error-prone
/** Returns true if {@code erasure(s)} is castable to {@code erasure(t)}. */
public static boolean isCastable(Type s, Type t, VisitorState state) {
if (s == null || t == null) {
return false;
}
Types types = state.getTypes();
return types.isCastable(types.erasure(s), types.erasure(t));
}
代码示例来源:origin: google/error-prone
/** Returns true if {@code erasure(s) <: erasure(t)}. */
public static boolean isSubtype(Type s, Type t, VisitorState state) {
if (s == null || t == null) {
return false;
}
if (SUBTYPE_UNDEFINED.contains(s.getTag()) || SUBTYPE_UNDEFINED.contains(t.getTag())) {
return false;
}
Types types = state.getTypes();
return types.isSubtype(types.erasure(s), types.erasure(t));
}
代码示例来源:origin: google/error-prone
/** Returns the binary names of the class. */
public static String classDescriptor(Type type, Types types) {
SigGen sig = new SigGen(types);
sig.assembleClassSig(types.erasure(type));
return sig.toString();
}
代码示例来源:origin: google/error-prone
/** Returns a JVMS 4.3.3 method descriptor. */
public static String descriptor(Type type, Types types) {
SigGen sig = new SigGen(types);
sig.assembleSig(types.erasure(type));
return sig.toString();
}
代码示例来源:origin: google/error-prone
@Override
public boolean matches(Tree tree, VisitorState state) {
if (tree instanceof IfTree) {
ExpressionTree conditionTree = ASTHelpers.stripParentheses(((IfTree) tree).getCondition());
if (conditionTree instanceof InstanceOfTree) {
InstanceOfTree instanceOfTree = (InstanceOfTree) conditionTree;
Types types = state.getTypes();
boolean isCastable =
types.isCastable(
types.erasure(ASTHelpers.getType(instanceOfTree.getType())),
types.erasure(ASTHelpers.getType(typeTree)));
boolean isSameExpression =
instanceOfTree.getExpression().toString().equals(expressionTree.toString());
return isSameExpression && !isCastable;
}
}
return false;
}
}
代码示例来源:origin: google/error-prone
ImmutableList.Builder<Type> calleeFormatArgTypesBuilder = ImmutableList.builder();
for (ExpressionTree formatArgExpression : args) {
calleeFormatArgTypesBuilder.add(types.erasure(((JCExpression) formatArgExpression).type));
代码示例来源:origin: google/error-prone
@Override
public Choice<Unifier> visitForAll(ForAll target, Unifier unifier) {
Types types = unifier.types();
try {
Type myType = inline(new Inliner(unifier.getContext(), Bindings.create()));
return Choice.condition(
types.overrideEquivalent(types.erasure(myType), types.erasure(target)), unifier);
} catch (CouldNotResolveImportException e) {
return Choice.none();
}
}
代码示例来源:origin: google/error-prone
private static boolean isAssignableTo(Type type, Supplier<Type> supplier, VisitorState state) {
Type to = supplier.get(state);
if (to == null) {
// the type couldn't be loaded
return false;
}
to = state.getTypes().erasure(to);
return state.getTypes().isAssignable(type, to);
}
代码示例来源:origin: google/error-prone
private static Optional<Fix> linkedListFix(Tree tree, VisitorState state) {
Type type = getTargetType(state);
if (type == null) {
return Optional.empty();
}
Types types = state.getTypes();
for (String replacement : ImmutableList.of("java.util.ArrayList", "java.util.ArrayDeque")) {
Symbol sym = state.getSymbolFromString(replacement);
if (sym == null) {
continue;
}
if (types.isAssignable(types.erasure(sym.asType()), types.erasure(type))) {
SuggestedFix.Builder fix = SuggestedFix.builder();
while (tree instanceof ParameterizedTypeTree) {
tree = ((ParameterizedTypeTree) tree).getType();
}
fix.replace(tree, SuggestedFixes.qualifyType(state, fix, sym));
return Optional.of(fix.build());
}
}
return Optional.empty();
}
代码示例来源:origin: google/error-prone
/**
* Recognize a small set of known-immutable types that are safe for DCL even without a volatile
* field.
*/
private static boolean isImmutable(Type type, VisitorState state) {
switch (type.getKind()) {
case BOOLEAN:
case BYTE:
case SHORT:
case INT:
case CHAR:
case FLOAT:
return true;
case LONG:
case DOUBLE:
// double-width primitives aren't written atomically
return true;
default:
break;
}
return IMMUTABLE_WHITELIST.contains(
state.getTypes().erasure(type).tsym.getQualifiedName().toString());
}
代码示例来源:origin: google/error-prone
Type unboxedType = types.unboxedTypeOrType(types.erasure(type));
if (unboxedType.isPrimitive()) {
type = unboxedType;
代码示例来源:origin: google/error-prone
@Override
public Description matchMethodInvocation(
MethodInvocationTree methodInvocationTree, VisitorState visitorState) {
if (!TO_ARRAY_MATCHER.matches(methodInvocationTree, visitorState)) {
return NO_MATCH;
}
Types types = visitorState.getTypes();
Type variableType =
types.elemtype(getType(getOnlyElement(methodInvocationTree.getArguments())));
if (variableType == null) {
return NO_MATCH;
}
Type collectionType =
types.asSuper(
ASTHelpers.getReceiverType(methodInvocationTree),
visitorState.getSymbolFromString("java.util.Collection"));
List<Type> typeArguments = collectionType.getTypeArguments();
if (!typeArguments.isEmpty()
&& !types.isCastable(
types.erasure(variableType), types.erasure(getOnlyElement(typeArguments)))) {
return describeMatch(methodInvocationTree);
}
return NO_MATCH;
}
}
代码示例来源:origin: google/error-prone
@Override
public boolean matches(ExpressionTree expressionTree, VisitorState state) {
Symbol sym = ASTHelpers.getSymbol(expressionTree);
if (sym == null) {
return false;
}
if (!(sym instanceof MethodSymbol)) {
throw new IllegalArgumentException(
"DescendantOf matcher expects a method call but found "
+ sym.getClass()
+ ". Expression: "
+ expressionTree);
}
if (sym.isStatic()) {
return false;
}
if (methodName.equals(sym.toString())) {
Type accessedReferenceType = sym.owner.type;
Type collectionType = state.getTypeFromString(fullClassName);
if (collectionType != null) {
return state
.getTypes()
.isSubtype(accessedReferenceType, state.getTypes().erasure(collectionType));
}
}
return false;
}
}
代码示例来源:origin: google/error-prone
boolean isKnownCheckedException(VisitorState state, Type type) {
Types types = state.getTypes();
Symtab symtab = state.getSymtab();
// Check erasure for generics.
type = types.erasure(type);
return
// Has to be some Exception: A variable of type Throwable might be an Error.
types.isSubtype(type, symtab.exceptionType)
// Has to be some subtype: A variable of type Exception might be a RuntimeException.
&& !types.isSameType(type, symtab.exceptionType)
// Can't be of type RuntimeException.
&& !types.isSubtype(type, symtab.runtimeExceptionType);
}
};
代码示例来源:origin: google/error-prone
return Description.NO_MATCH;
Type instantiatedReturnType = types.erasure(call.meth.type.getReturnType());
if (instantiatedReturnType == null) {
return Description.NO_MATCH;
return Description.NO_MATCH;
Type uninstantiatedReturnType = types.erasure(methodSym.type.getReturnType());
if (uninstantiatedReturnType == null) {
return Description.NO_MATCH;
代码示例来源:origin: google/error-prone
Type canonicalType = types.erasure(importedType.asType());
if (canonicalType == null) {
return null;
Type owner = types.erasure(member.owner.type);
if (canonicalOwner == null || types.isSubtype(owner, canonicalOwner)) {
canonicalOwner = owner;
代码示例来源:origin: google/error-prone
types.erasure(ASTHelpers.getType(instanceOfTree.getType())),
types.erasure(ASTHelpers.getType(tree)));
代码示例来源:origin: google/error-prone
JCVariableDecl declaration = (JCVariableDecl) jcTree;
TypeSymbol variableTypeSymbol =
state.getTypes().erasure(ASTHelpers.getType(declaration)).tsym;
代码示例来源:origin: google/error-prone
Type erasedType = types.erasure(typeCastTreeType);
if (ASTHelpers.isSameType(erasedType, state.getSymtab().objectType, state)) {
内容来源于网络,如有侵权,请联系作者删除!