Package com.dragome.compiler.units

Examples of com.dragome.compiler.units.ClassUnit


  public void visit(TypeDeclaration theTypeDecl)
  {
    Map<String, String> annotations= theTypeDecl.getAnnotations();

    ClassUnit classUnit= project.getClassUnit(theTypeDecl.getType());

    lastChar= '\0';
    currentNode= null;
    depth= 0;

    typeDecl= theTypeDecl;

    boolean isInterface= Modifier.isInterface(typeDecl.getAccess());

    String type= isInterface ? "Interface" : "Class";
    print("qx." + type + ".define(\"");
    print(normalizeExpression(theTypeDecl.getClassName()));
    println("\", ");
    println("{");

    depth++;

    if (classUnit.getSuperUnit() != null)
    {
      String superUnitName= normalizeExpression(classUnit.getSuperUnit().getName());
      print("extend: " + superUnitName);
      println(",");
    }
    else
    {
      if (!classUnit.getName().equals("java.lang.Object"))
      {
        print("extend: java_lang_Object");
      }
      else
      {
        print("extend: qx.core.Object");
      }
      println(",");
    }

    if (!classUnit.getName().equals("java.lang.Object"))
      println("construct: function(){},");

    classUnit.setData(reset());

    List fields= theTypeDecl.getFields();
    for (int i= 0; i < fields.size(); i++)
    {
      VariableDeclaration decl= (VariableDeclaration) fields.get(i);

      if (decl.getLocation() == VariableDeclaration.NON_LOCAL)
      {
        //      if (Modifier.isStatic(decl.getModifiers()))
        //    continue;
        //    indent();
        decl.visit(this);
        //println(",");
      }
    }
    depth--;
    //  String superType= null;
    //
    //  if (theTypeDecl.getSuperType() != null && !Modifier.isInterface(theTypeDecl.getAccess()))
    //  {
    //      superType= Project.getSingleton().getSignature(theTypeDecl.getSuperType().getClassName()).getCommentedId();
    //  }

    //  for (int i= 0; i < fields.size(); i++)
    //  {
    //      VariableDeclaration decl= (VariableDeclaration) fields.get(i);
    //
    //      if (!Modifier.isStatic(decl.getModifiers()))
    //    continue;
    //      indent();
    //      decl.visit(this);
    //      println(";");
    //  }

    depth++;
    MethodDeclaration[] methods= theTypeDecl.getMethods();
    List<String> processedMethods= new ArrayList<String>();

    for (int i= 0; i < methods.length; i++)
    {
      MethodDeclaration method= methods[i];
      currentMethodDeclaration= method;
      try
      {
        String normalizeExpression= normalizeExpression(Project.getSingleton().getSignature(method.getMethodBinding().toString()).relative());

        if (!processedMethods.contains(normalizeExpression))
        {
          processedMethods.add(normalizeExpression);
          method.visit(this);
        }
        else
          System.out.println("duplicado!");
        //    System.out.println("llego!");
      }
      catch (RuntimeException ex)
      {
        throw Utils.generateException(ex, method, currentNode);
      }
    }
    processedMethods.clear();

    depth--;

    reset();
    depth++;
    //addSuperMethodsDefinition();
    depth--;

    classUnit.setData(classUnit.getData() + reset());
  }
View Full Code Here


    //  String className2= method.getMethodBinding().getDeclaringClass().getClassName();
    // !className2.startsWith("java.lang") && (method.getAnnotationsValues().get("alias") == null || className2.contains("JSONTokener")

    if ("Strict".equalsIgnoreCase(compiler))
    {
      ClassUnit classUnit= project.getClassUnit(method.getMethodBinding().getDeclaringClass().getClassName());
      classUnit.addNotReversibleMethod(Pass1.extractMethodNameSignature(method.getMethodBinding()));
    }

    MethodBinding methodBinding= method.getMethodBinding();
    ProcedureUnit unit= project.getProcedureUnit(methodBinding);
View Full Code Here

    project.currentGeneratedMethods= 0;

    if (DragomeJsCompiler.compiler.getSingleEntryPoint() != null)
    {
      Signature signature= project.getSignature(DragomeJsCompiler.compiler.getSingleEntryPoint());
      ClassUnit clazz= project.getClassUnit(signature.className());
      clazz.write(0, writer);
    }
    else
    {
      ClassUnit object= project.getJavaLangObject();
      object.write(0, writer);

      do
      {
        ClassUnit.oneWritten= false;
        for (ClassUnit cu : project.getClasses())
        {
          //    if (cu.isInterface)
          {
            cu.write(0, writer);
          }
        }
      }
      while (ClassUnit.oneWritten);

    }

    ClassUnit stringClazz= project.getClassUnit(String.class.getName());
    ClassUnit stringSuperClazz= stringClazz.getSuperUnit();

    Collection<MemberUnit> declaredMembers= new ArrayList<MemberUnit>(stringClazz.getDeclaredMembers());
    declaredMembers.addAll(stringSuperClazz.getDeclaredMembers());

    for (MemberUnit memberUnit : declaredMembers)
    {
      Signature signature= memberUnit.getSignature();
      String normalizeExpression= DragomeJavaScriptGenerator.normalizeExpression(signature);
View Full Code Here

    }
  }

  public void processSingle(Signature signature)
  {
    ClassUnit clazz= resolve(signature.className());
    if (classpathFilter.accept(new File(signature.className().replace(".", "/"))))
    {
      String methodPart= signature.relativeSignature();
      boolean found= false;
      for (MemberUnit member : clazz.getMembers(methodPart))
      {
        taint(member);
        found= true;
      }
View Full Code Here

    }
  }

  private ClassUnit resolve(String className)
  {
    ClassUnit clazz= project.getOrCreateClassUnit(className);

    if (className.startsWith("["))
    {
      project.resolve(clazz);
    }
View Full Code Here

    return clazz;
  }

  public ClassUnit resolveNoTainting(String className)
  {
    ClassUnit clazz= project.getOrCreateClassUnit(className);

    if (className.startsWith("["))
    {
      project.resolve(clazz);
    }
View Full Code Here

  private void processOverWrittenMembers()
  {
    Iterator<ClassUnit> classIterator= resolvedTypes.iterator();
    while (classIterator.hasNext())
    {
      ClassUnit clazz= classIterator.next();
      if (clazz.isConstructorTainted)
        taintIfSuperTainted(clazz);
      ;
    }
  }
View Full Code Here

    signature= signature.replaceAll("\\s", "");

    Signature s= Project.getSingleton().getSignature(signature);
    if (s.isClass())
    {
      ClassUnit clazz= resolve(s.className());

      for (MemberUnit member : clazz.getDeclaredMembers())
      {
        taint(member.getAbsoluteSignature());
      }
    }
    else
View Full Code Here

  }

  public void visitSuperTypes(ClassUnit clazz, TypeVisitor visitor)
  {
    visitor.visit(clazz);
    ClassUnit superClass= clazz.getSuperUnit();
    if (superClass != null)
    {
      visitSuperTypes(superClass, visitor);
    }
View Full Code Here

    return javaLangObject;
  }

  public ClassUnit getClassUnit(String className)
  {
    ClassUnit clazz= classesByName.get(className);
    if (clazz != null)
      return clazz;

    throw new RuntimeException("No such unit: " + className);
  }
View Full Code Here

TOP

Related Classes of com.dragome.compiler.units.ClassUnit

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.