@Test public void testTypeParam() throws Exception { doTest(TypeParamHolder.class, map -> { TypeParamInfo.Class classTypeParam = (TypeParamInfo.Class) assertTypeVariable(map.get("classTypeParam"), "ClassTypeParam").getParam(); assertEquals("ClassTypeParam", classTypeParam.getName()); TypeParamInfo.Method methodTypeParam = (TypeParamInfo.Method) assertTypeVariable(map.get("methodTypeParam"), "MethodTypeParam").getParam(); assertEquals("MethodTypeParam", methodTypeParam.getName()); }); }
if (arg_.isVariable()) { TypeVariableInfo ttt = (TypeVariableInfo) arg_; if (ttt.getParam().equals(typeParam)) { return new TypeArgExpression(TypeArgExpression.CLASS_TYPE_ARG, ttt, param, 0); if (i instanceof TypeVariableInfo) { TypeVariableInfo tt = (TypeVariableInfo) i; if (tt.getParam().equals(typeParam)) { return new TypeArgExpression(TypeArgExpression.API_ARG, tt, param, index);
@Test public void testApi() throws Exception { doTest(ApiHolder.class, map -> { ApiTypeInfo api = assertApi(map.get("api"), ApiObject.class.getName()); assertEquals(ApiObject.class.getName(), api.getName()); ParameterizedTypeInfo apiParameterizedByClass = assertParameterized(map.get("apiParameterizedByClass"), GenericInterface.class.getName() + "<java.lang.String>", ClassKind.API); assertClass(apiParameterizedByClass.getArg(0), "java.lang.String", ClassKind.STRING); ParameterizedTypeInfo apiParameterizedByClassTypeParam = assertParameterized(map.get("apiParameterizedByClassTypeParam"), GenericInterface.class.getName() + "<ClassTypeParam>", ClassKind.API); TypeParamInfo.Class classTypeParam = (TypeParamInfo.Class) assertTypeVariable(apiParameterizedByClassTypeParam.getArg(0), "ClassTypeParam").getParam(); assertEquals("ClassTypeParam", classTypeParam.getName()); ParameterizedTypeInfo apiParameterizedByMethodTypeParam = assertParameterized(map.get("apiParameterizedByMethodTypeParam"), GenericInterface.class.getName() + "<MethodTypeParam>", ClassKind.API); TypeParamInfo.Method methodTypeParam = (TypeParamInfo.Method) assertTypeVariable(apiParameterizedByMethodTypeParam.getArg(0), "MethodTypeParam").getParam(); assertEquals("MethodTypeParam", methodTypeParam.getName()); }); }
private String genTypeArg(TypeVariableInfo typeVar, MethodInfo method) { if (typeVar.isClassParam()) { return "__typeArg_" + typeVar.getParam().getIndex(); } else { TypeArgExpression typeArg = method.resolveTypeArg(typeVar); if (typeArg != null) { if (typeArg.isClassType()) { return "io.vertx.lang.rx.TypeArg.of(" + typeArg.getParam().getName() + ")"; } else { return typeArg.getParam().getName() + ".__typeArg_" + typeArg.getIndex(); } } } return null; }
private String genTypeArg(TypeVariableInfo typeVar, MethodInfo method) { if (typeVar.isClassParam()) { return "__typeArg_" + typeVar.getParam().getIndex(); } else { TypeArgExpression typeArg = method.resolveTypeArg(typeVar); if (typeArg != null) { if (typeArg.isClassType()) { return "io.vertx.lang.rx.TypeArg.of(" + typeArg.getParam().getName() + ")"; } else { return typeArg.getParam().getName() + ".__typeArg_" + typeArg.getIndex(); } } } return null; }
checkParam(params1.get(0), "t", new TypeLiteral<T>(){}); assertTrue(params1.get(0).getType() instanceof TypeVariableInfo); assertEquals(t, ((TypeVariableInfo)params1.get(0).getType()).getParam()); assertTrue(((TypeVariableInfo)params1.get(0).getType()).isClassParam()); assertFalse(((TypeVariableInfo)params1.get(0).getType()).isMethodParam()); checkParam(params2.get(0), "r", new TypeLiteral<R>(){}); assertTrue(params2.get(0).getType() instanceof TypeVariableInfo); assertEquals(methods.get(1).getTypeParams().get(0), ((TypeVariableInfo) params2.get(0).getType()).getParam()); assertFalse(((TypeVariableInfo) params2.get(0).getType()).isClassParam()); assertTrue(((TypeVariableInfo) params2.get(0).getType()).isMethodParam());
assertEquals(col, ofMethodTypeParam.getRaw()); assertEquals(1 + typeParamIndex, ofMethodTypeParam.getArgs().size()); TypeParamInfo.Method methodTypeParam = (TypeParamInfo.Method) ((TypeVariableInfo) ofMethodTypeParam.getArg(typeParamIndex)).getParam(); assertEquals("MethodTypeParam", methodTypeParam.getName()); ParameterizedTypeInfo ofDataObject = (ParameterizedTypeInfo) map.get(colType + "OfDataObject");