Created
November 2, 2017 00:30
-
-
Save DarkSeraphim/3089f02ebfca41a5f4fd3b3e4a7b0139 to your computer and use it in GitHub Desktop.
Lot's of parameters are now generated!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| JavacProcessingEnvironment env = (JavacProcessingEnvironment) ArmoryProcessor.environment; | |
| JavacElements elements = env.getElementUtils(); | |
| String className = getPackageName(root) + classTree.getSimpleName(); | |
| System.out.println("Hi there"); | |
| TreeMaker maker = TreeMaker.instance(env.getContext()); | |
| Symtab symtab = Symtab.instance(env.getContext()); | |
| maker = maker.at(((JCTree.JCClassDecl) classTree).pos()); | |
| System.out.println("Size is " + classTree.getMembers().size()); | |
| JCTree[] tree = ((JCTree.JCClassDecl) classTree).defs.toArray(new JCTree[classTree.getMembers().size() + 1]); | |
| System.out.println("Size is " + tree.length); | |
| JCTree.JCModifiers mods = maker.Modifiers(Flags.PUBLIC | Flags.STATIC); | |
| JavacElements elem = env.getElementUtils(); | |
| Name name = elem.getName("getBadLanguage"); | |
| JCTree.JCExpression returnType = maker.Ident(elem.getName("String")); | |
| List<JCTree.JCTypeParameter> typeParameters = List.nil(); | |
| JCTree.JCVariableDecl receiver = null; | |
| JCTree.JCModifiers modifiers = maker.Modifiers(Flags.PARAMETER); | |
| Name varname = elem.getName("parameter"); | |
| JCTree.JCExpression vartype = maker.Ident(elem.getName("Object")); | |
| JCTree.JCExpression init = null; // TODO: experiment with this | |
| JCTree.JCVariableDecl variable = maker.VarDef(modifiers, varname, vartype, init); | |
| List<JCTree.JCVariableDecl> params = List.of(variable); | |
| List<JCTree.JCExpression> thrown = List.nil(); | |
| JCTree.JCExpression kotlin = maker.Ident(varname);// maker.Literal("Kotlin"); | |
| JCTree.JCReturn returnKotlin = maker.Return(kotlin); | |
| JCTree.JCBlock body = maker.Block(0, List.of(returnKotlin)); | |
| JCTree.JCExpression defaultValue = null; // TODO: experiment with this | |
| /**/ | |
| Type.MethodType type = new Type.MethodType(List.of(symtab.stringType), symtab.stringType, List.nil(), symtab.methodClass); | |
| Symbol.MethodSymbol sym = new Symbol.MethodSymbol(Flags.PUBLIC | Flags.STATIC, name, type, ((JCTree.JCClassDecl) classTree).sym); | |
| //*/ | |
| //JCTree.JCMethodDecl decl = maker.MethodDef(mods, name, returnType, typeParameters, receiver, params, thrown, body, defaultValue); | |
| //decl.sym = sym; | |
| JCTree.JCMethodDecl decl = maker.MethodDef(sym, body); | |
| decl.params.forEach(p -> { | |
| p.sym.adr = 0; | |
| p.sym.name = varname; | |
| }); | |
| variable.sym = new Symbol.VarSymbol(Flags.PARAMETER, varname, kotlin.type, sym); | |
| variable.sym.adr = 0; | |
| ((JCTree.JCClassDecl) classTree).sym.members_field.enter(decl.sym); | |
| tree[tree.length - 1] = decl; | |
| ((JCTree.JCClassDecl) classTree).defs = List.from(tree); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment