public final boolean hasThis() { return !isStatic(); }
public final boolean hasThis() { return !isStatic(); }
public final boolean hasThis() { return !isStatic(); }
@MethodVisitor public boolean check(MethodDefinition md) { return !md.isStatic(); }
boolean isThis(Expression expr) { return !md.isStatic() && Exprs.isThis(expr); }
@MethodVisitor public boolean checkMethod(MethodDefinition md, TypeDefinition td) { return !td.isFinal() && !md.isStatic(); }
public static boolean isMain(MethodDefinition md) { return md.getName().equals("main") && md.isPublic() && md.isStatic() && md.getErasedSignature().startsWith("([Ljava/lang/String;)"); }
@MethodVisitor public boolean checkMethod(MethodDefinition md, TypeDefinition td) { return td.isPublic() && !td.isFinal() && !md.isStatic(); }
@Override public Void visitMethodDeclaration(final MethodDeclaration node, final Void p) { final MethodDefinition method = node.getUserData(Keys.METHOD_DEFINITION); if (method != null) { if (method.isSynthetic() && method.isStatic()) { if (tryMatchAccessor(node) || tryMatchCallWrapper(node)) { _accessMethodDeclarations.put(makeMethodKey(method), node); } } } return super.visitMethodDeclaration(node, p); }
@Override public Void visitMethodDeclaration(final MethodDeclaration node, final Void _) { final MethodDefinition method = node.getUserData(Keys.METHOD_DEFINITION); if (method != null) { if (method.isSynthetic() && method.isStatic()) { if (tryMatchAccessor(node) || tryMatchCallWrapper(node)) { _accessMethodDeclarations.put(makeMethodKey(method), node); } } } return super.visitMethodDeclaration(node, _); }
@Override public Void visitMethodDeclaration(final MethodDeclaration node, final Void _) { final MethodDefinition method = node.getUserData(Keys.METHOD_DEFINITION); if (method != null) { if (method.isSynthetic() && method.isStatic()) { if (tryMatchAccessor(node) || tryMatchCallWrapper(node)) { _accessMethodDeclarations.put(makeMethodKey(method), node); } } } return super.visitMethodDeclaration(node, _); }
private boolean selfCall(Expression expr, MethodDefinition md) { if (!(expr.getOperand() instanceof MethodReference)) return false; MethodReference mr = (MethodReference) expr.getOperand(); if (!mr.isEquivalentTo(md)) return false; switch (expr.getCode()) { case InvokeStatic: return md.isStatic(); case InitObject: case InvokeSpecial: return md.isConstructor(); case InvokeVirtual: case InvokeInterface: return !md.isStatic() && Exprs.isThis(expr.getArguments().get(0)); default: return false; } }
static boolean isClassMethodCandidate(final MethodDefinition m) { return m != null && m.isSynthetic() && m.isStatic() && m.isPackagePrivate() && m.getParameters().size() == 1 && CommonTypeReferences.Class.isEquivalentTo(m.getReturnType()) && CommonTypeReferences.String.isEquivalentTo(m.getParameters().get(0).getParameterType()); }
private static boolean isStaticContext(final AstNode node) { for (AstNode n = node; n != null && !n.isNull(); n = n.getParent()) { if (n instanceof MethodDeclaration) { final MethodDefinition method = n.getUserData(Keys.METHOD_DEFINITION); if (method != null) { return method.isStatic(); } } if (n instanceof TypeDeclaration) { final TypeDefinition type = n.getUserData(Keys.TYPE_DEFINITION); if (type != null) { return type.isStatic(); } } } return false; }
private Expression findOverloadCall(MethodDefinition md, Block block) { return (Expression)Nodes.find(block, node -> { if (Nodes.isOp(node, md.isConstructor() ? AstCode.InvokeSpecial : md.isStatic() ? AstCode.InvokeStatic : AstCode.InvokeVirtual)) { Expression expr = (Expression) node; MethodReference mr = (MethodReference) expr.getOperand(); if (mr.getDeclaringType().isEquivalentTo(md.getDeclaringType()) && mr.getName().equals(md.getName()) && !mr.getSignature().equals(md.getSignature())) { return true; } } return false; }); } }
private static boolean isSwitchMapMethod(final MethodReference method) { if (method == null) { return false; } final MethodDefinition definition = method instanceof MethodDefinition ? (MethodDefinition) method : method.resolve(); return definition != null && definition.isSynthetic() && definition.isStatic() && definition.isPackagePrivate() && StringUtilities.startsWith(definition.getName(), "$SWITCH_TABLE$") && MetadataResolver.areEquivalent(BuiltinTypes.Integer.makeArrayType(), definition.getReturnType()); }
private static boolean isSwitchMapMethod(final MethodReference method) { if (method == null) { return false; } final MethodDefinition definition = method instanceof MethodDefinition ? (MethodDefinition) method : method.resolve(); return definition != null && definition.isSynthetic() && definition.isStatic() && definition.isPackagePrivate() && StringUtilities.startsWith(definition.getName(), "$SWITCH_TABLE$") && MetadataResolver.areEquivalent(BuiltinTypes.Integer.makeArrayType(), definition.getReturnType()); }
private static boolean isSwitchMapMethod(final MethodReference method) { if (method == null) { return false; } final MethodDefinition definition = method instanceof MethodDefinition ? (MethodDefinition) method : method.resolve(); return definition != null && definition.isSynthetic() && definition.isStatic() && definition.isPackagePrivate() && StringUtilities.startsWith(definition.getName(), "$SWITCH_TABLE$") && MetadataResolver.areEquivalent(BuiltinTypes.Integer.makeArrayType(), definition.getReturnType()); }
public boolean isOverridden(MethodDefinition md) { if(md.isStatic() || md.isFinal() || md.getDeclaringType().isFinal()) return false; IMetadataResolver resolver = md.getDeclaringType().getResolver(); MemberInfo mi = new MemberInfo(md); TypeHierarchy th = get(md.getDeclaringType()); return th != null && th.isOverridden(resolver, mi); }
@Override protected void visitType(TypeDefinition td) { for (MethodDefinition md : td.getDeclaredMethods()) { MethodData mdata = getMethodData(md); if (md.isFinal() || td.isFinal() || md.isStatic() || md.isPrivate()) { mdata.flags |= METHOD_FINAL; } visitMethod(mdata, md); for (MethodDefinition superMethod : Methods.findSuperMethods(md)) { getMethodData(superMethod).addSubMethod(mdata); } } }