instructions.add(token.line, new WeaselInstructionNew(weaselClass.getByteName()));
instructions.add(token.line, new WeaselInstructionPush(1));
instructions.add(token.line, new WeaselInstructionInvoke(weaselClass.getRealName()+".<preInit>()"));
List<WeaselGenericMethod2> methods = genericClass.getGenericMethods("<init>", true);
instructions.add(token.line, new WeaselInstructionPush(1));
WeaselParameterCompileReturn wcr = WeaselTree.compileParamList(token.line, newClass, compiler, compilerHelper, func, methods);
instructions.addAll(wcr.instructions);
instructions.add(token.line, new WeaselInstructionInvoke(wcr.method.getMethod().getMethod().getClassNameAndDesk()));
}else{
String className = weaselClass.getByteName();
for(int i=0; i<arraySize.size(); i++){
className = "["+className;
}
genericClass = new WeaselGenericClass(compiler.getWeaselClass(className), genericClass.getGenerics());
if(arrayInit==null){
className = weaselClass.getByteName();
int sizes = 0;
for(WeaselTree tree:arraySize){
if(tree==null){
className = "["+className;
}else{
WeaselCompilerReturn wcr = tree.compile(compiler, compilerHelper, null, new WeaselGenericClass(compiler.baseTypes.intClass), null, false);
instructions.addAll(wcr.getInstructions(compiler, compiler.baseTypes.intClass));
sizes++;
}
}
instructions.add(token.line, new WeaselInstructionNewArray(className, sizes));
}else{
instructions.addAll(arrayInit.compile(compiler, compilerHelper, genericClass));
}
}
return new WeaselCompilerReturnInstructionList(instructions, genericClass);
}else if(isFunc){
List<WeaselGenericMethod2> methods;
if(elementParent==null){
methods = compilerHelper.getGenericMethods((String)token.param);
}else{
compiler.compileEasy(elementParent.getBaseClass());
methods = elementParent.getGenericMethods((String)token.param, isVariable);
}
if(methods.isEmpty()){
throw new WeaselCompilerException(token.line, "Method not found %s", token);
}
WeaselParameterCompileReturn wcr = WeaselTree.compileParamList(token.line, (String)token.param, compiler, compilerHelper, func, methods);
if(elementParent==null){
if(!WeaselModifier.isStatic(wcr.method.getMethod().getMethod().getModifier())){
instructions.add(token.line, new WeaselInstructionLoadVariable(compilerHelper.getVariable("this").pos));
}
}
instructions.addAll(wcr.instructions);
if(elementParent==null){
if(WeaselModifier.isStatic(wcr.method.getMethod().getMethod().getModifier())){
instructions.add(token.line, new WeaselInstructionInvokeStatic(wcr.method.getMethod().getMethod().getNameAndDesk()));
}else{
instructions.add(token.line, new WeaselInstructionInvoke(wcr.method.getMethod().getMethod().getClassNameAndDesk()));
}
}else{
if(isVariable){
instructions.add(token.line, new WeaselInstructionInvoke(wcr.method.getMethod().getMethod().getClassNameAndDesk()));
}else{
instructions.add(token.line, new WeaselInstructionInvokeStatic(wcr.method.getMethod().getMethod().getNameAndDesk()));
}
}