Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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))