def FieldDeclaration(self, body): mtype = self.solver(body.type) variable_declarators = [] for var in body.variable_declarators: if var.initializer and type(var.initializer) == plyj.InstanceCreation and len(var.initializer.body) > 0: mtype = self.solver(var.initializer.type) variable = self.solver(var.variable) anonymous = AnonymousName_helper() oClass = plyj.ClassDeclaration(anonymous, var.initializer.body, extends=mtype) initializer = plyj.InstanceCreation( anonymous, type_arguments=var.initializer.type_arguments, arguments=var.initializer.arguments, enclosed_in=var.initializer.enclosed_in, ) self.deferManager.addAnonyClass( anonymous, [mtype], (oClass, self.vManager.getPath() + "." + variable, self.solver(initializer)) ) return variable, initializer = self.solver(var) self.vManager.newVariable(variable, mtype, isMember=True) if initializer is None: self.c(mtype) result = "{} = {}\n".format(variable, JavaLib.builtinTypes(mtype)) elif initializer.startswith(ANONYMOUS_PREFIX) or type(var.initializer) in [plyj.Literal, plyj.Unary]: if type(var.initializer) == plyj.Name: for part in initializer.split("."): self.fieldUsedName.add(part) if initializer in self.vManager.members: initializer = self.vManager.members[initializer] result = "{} = {}\n".format(variable, initializer) else: result = "{} = None\n".format(variable) self.p(result)
def VariableDeclaration(self, body): """ TYPE := VARIABLE_DECLARATORS """ mtype = self.solver(body.type) variables = [] initializers = [] for variable in body.variable_declarators: variable, initializer = self.solver(variable) if variable: self.vManager.newVariable(variable, mtype) if initializer: variables.append(variable) initializers.append(initializer) else: variables.append(variable) initializers.append(JavaLib.builtinTypes(mtype)) return "{} = {}".format(", ".join(variables), ", ".join(initializers))