public MethodDependency propagate(int parameterIndex, Class<?> type) { return propagate(parameterIndex, dependencyAnalyzer.getType(type.getName())); }
public MethodDependency propagate(int parameterIndex, String type) { return propagate(parameterIndex, dependencyAnalyzer.getType(type)); }
private void includeDefaultDependencies(DependencyAgent agent) { agent.linkMethod(JavaScriptConvGenerator.fromJsMethod).use(); agent.linkMethod(JavaScriptConvGenerator.toJsMethod).use(); agent.linkMethod(JavaScriptConvGenerator.intValueMethod).propagate(0, Integer.class).use(); agent.linkMethod(JavaScriptConvGenerator.valueOfIntMethod).use(); agent.linkMethod(JavaScriptConvGenerator.booleanValueMethod).propagate(0, Boolean.class).use(); agent.linkMethod(JavaScriptConvGenerator.valueOfBooleanMethod).use(); agent.linkMethod(JavaScriptConvGenerator.doubleValueMethod).propagate(0, Double.class).use(); agent.linkMethod(JavaScriptConvGenerator.valueOfDoubleMethod).use(); agent.linkMethod(JavaScriptConvGenerator.charValueMethod).propagate(0, Character.class).use(); agent.linkMethod(JavaScriptConvGenerator.valueOfCharMethod).use(); agent.linkMethod(JavaScriptConvGenerator.byteValueMethod).propagate(0, Byte.class).use(); agent.linkMethod(JavaScriptConvGenerator.valueOfByteMethod).use(); agent.linkMethod(JavaScriptConvGenerator.shortValueMethod).propagate(0, Short.class).use(); agent.linkMethod(JavaScriptConvGenerator.valueOfShortMethod).use(); agent.linkMethod(JavaScriptConvGenerator.valueOfLongMethod).use(); allClassesNode.propagate(agent.getType("java.lang.Integer")); allClassesNode.propagate(agent.getType("java.lang.Float")); allClassesNode.propagate(agent.getType("java.lang.Double")); allClassesNode.propagate(agent.getType("java.lang.String")); }
MethodDependency initMethod = agent.linkMethod(new MethodReference(className, "<init>", ValueType.VOID)); initMethod.propagate(0, className); initMethod.use(); MethodDependency readMethod = agent.linkMethod(new MethodReference(className,
public MethodDependency propagate(int parameterIndex, String type) { return propagate(parameterIndex, dependencyChecker.getType(type)); }
public MethodDependency propagate(int parameterIndex, Class<?> type) { return propagate(parameterIndex, dependencyChecker.getType(type.getName())); }
@Override public void methodReached(DependencyAgent agent, MethodDependency method, CallLocation location) { if (method.getReference().getClassName().equals(Platform.class.getName()) && method.getReference().getName().equals("getAnnotations")) { method.getResult().propagate(agent.getType("[" + Annotation.class.getName())); agent.linkMethod(new MethodReference(PlatformAnnotationProvider.class, "getAnnotations", Annotation[].class), location); allClasses.addConsumer(type -> { if (type.getName().endsWith("$$__annotations__$$")) { return; } String className = type.getName() + "$$__annotations__$$"; agent.linkMethod(new MethodReference(className, "<init>", ValueType.VOID), location) .propagate(0, className) .use(); MethodDependency readMethod = agent.linkMethod(new MethodReference(className, "getAnnotations", ValueType.parse(Annotation[].class)), location); readMethod.getResult().getArrayItem().connect(method.getResult().getArrayItem()); readMethod.use(); }); } } }