Package org.eclipse.jdt.internal.compiler.ast

Examples of org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration


  /* (non-Javadoc)
   * @see org.eclipse.jdt.internal.compiler.parser.Parser#endParse(int)
   */
  protected CompilationUnitDeclaration endParse(int act) {
    CompilationUnitDeclaration unit = super.endParse(act);
    if (unit.comments == null) {
      pushOnCommentsStack(0, this.scanner.commentPtr);
      unit.comments = getCommentsPositions();
    }
    return unit;
View Full Code Here


* 2. Create the field bindings
* 3. Create the method bindings
*/
public void completeTypeBindings(CompilationUnitDeclaration[] parsedUnits, boolean[] buildFieldsAndMethods, int unitCount) {
  for (int i = 0; i < unitCount; i++) {
    CompilationUnitDeclaration parsedUnit = parsedUnits[i];
    if (parsedUnit.scope != null)
      (this.unitBeingCompleted = parsedUnit).scope.checkAndSetImports();
  }

  for (int i = 0; i < unitCount; i++) {
    CompilationUnitDeclaration parsedUnit = parsedUnits[i];
    if (parsedUnit.scope != null)
      (this.unitBeingCompleted = parsedUnit).scope.connectTypeHierarchy();
  }

  for (int i = 0; i < unitCount; i++) {
    CompilationUnitDeclaration parsedUnit = parsedUnits[i];
    if (parsedUnit.scope != null) {
      (this.unitBeingCompleted = parsedUnit).scope.checkParameterizedTypes();
      if (buildFieldsAndMethods[i])
        parsedUnit.scope.buildFieldsAndMethods();
    }
View Full Code Here

  /* (non-Javadoc)
   * @see org.eclipse.jdt.internal.compiler.parser.Parser#endParse(int)
   */
  protected CompilationUnitDeclaration endParse(int act) {
    CompilationUnitDeclaration unit = super.endParse(act);
    if (unit.comments == null) {
      pushOnCommentsStack(0, this.scanner.commentPtr);
      unit.comments = getCommentsPositions();
    }
    return unit;
View Full Code Here

          }
          return internalCreateASTForKind();
        }
        break;
      case K_COMPILATION_UNIT :
        CompilationUnitDeclaration compilationUnitDeclaration = null;
        try {
          NodeSearcher searcher = null;
          org.eclipse.jdt.internal.compiler.env.ICompilationUnit sourceUnit = null;
          WorkingCopyOwner wcOwner = this.workingCopyOwner;
          if (this.typeRoot instanceof ICompilationUnit) {
              /*
               * this.compilationUnitSource is an instance of org.eclipse.jdt.internal.core.CompilationUnit that implements
               * both org.eclipse.jdt.core.ICompilationUnit and org.eclipse.jdt.internal.compiler.env.ICompilationUnit
               */
              sourceUnit = (org.eclipse.jdt.internal.compiler.env.ICompilationUnit) this.typeRoot;
              /*
               * use a BasicCompilation that caches the source instead of using the compilationUnitSource directly
               * (if it is a working copy, the source can change between the parse and the AST convertion)
               * (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=75632)
               */
              sourceUnit = new BasicCompilationUnit(sourceUnit.getContents(), sourceUnit.getPackageName(), new String(sourceUnit.getFileName()), this.project);
              wcOwner = ((ICompilationUnit) this.typeRoot).getOwner();
          } else if (this.typeRoot instanceof IClassFile) {
            try {
              String sourceString = this.typeRoot.getSource();
              if (sourceString == null) {
                throw new IllegalStateException();
              }
              PackageFragment packageFragment = (PackageFragment) this.typeRoot.getParent();
              BinaryType type = (BinaryType) this.typeRoot.findPrimaryType();
              IBinaryType binaryType = (IBinaryType) type.getElementInfo();
              // file name is used to recreate the Java element, so it has to be the toplevel .class file name
              char[] fileName = binaryType.getFileName();
              int firstDollar = CharOperation.indexOf('$', fileName);
              if (firstDollar != -1) {
                char[] suffix = SuffixConstants.SUFFIX_class;
                int suffixLength = suffix.length;
                char[] newFileName = new char[firstDollar + suffixLength];
                System.arraycopy(fileName, 0, newFileName, 0, firstDollar);
                System.arraycopy(suffix, 0, newFileName, firstDollar, suffixLength);
                fileName = newFileName;
              }
              sourceUnit = new BasicCompilationUnit(sourceString.toCharArray(), Util.toCharArrays(packageFragment.names), new String(fileName), this.project);
            } catch(JavaModelException e) {
              // an error occured accessing the java element
              StringWriter stringWriter = new StringWriter();
              PrintWriter writer = null;
              try {
                writer = new PrintWriter(stringWriter);
                e.printStackTrace(writer);
              } finally {
                if (writer != null) writer.close();
              }
              throw new IllegalStateException(String.valueOf(stringWriter.getBuffer()));
            }
          } else if (this.rawSource != null) {
            needToResolveBindings =
              ((this.bits & CompilationUnitResolver.RESOLVE_BINDING) != 0)
              && this.unitName != null
              && (this.project != null
                  || this.classpaths != null
                  || this.sourcepaths != null
                  || ((this.bits & CompilationUnitResolver.INCLUDE_RUNNING_VM_BOOTCLASSPATH) != 0))
              && this.compilerOptions != null;
            sourceUnit = new BasicCompilationUnit(this.rawSource, null, this.unitName == null ? "" : this.unitName, this.project); //$NON-NLS-1$
          } else {
            throw new IllegalStateException();
          }
          if ((this.bits & CompilationUnitResolver.PARTIAL) != 0) {
            searcher = new NodeSearcher(this.focalPointPosition);
          }
          int flags = 0;
          if ((this.bits & CompilationUnitResolver.STATEMENT_RECOVERY) != 0) {
            flags |= ICompilationUnit.ENABLE_STATEMENTS_RECOVERY;
          }
          if (searcher == null && ((this.bits & CompilationUnitResolver.IGNORE_METHOD_BODIES) != 0)) {
            flags |= ICompilationUnit.IGNORE_METHOD_BODIES;
          }
          if (needToResolveBindings) {
            if ((this.bits & CompilationUnitResolver.BINDING_RECOVERY) != 0) {
              flags |= ICompilationUnit.ENABLE_BINDINGS_RECOVERY;
            }
            try {
              // parse and resolve
              compilationUnitDeclaration =
                CompilationUnitResolver.resolve(
                  sourceUnit,
                  this.project,
                  getClasspath(),
                  searcher,
                  this.compilerOptions,
                  this.workingCopyOwner,
                  flags,
                  monitor);
            } catch (JavaModelException e) {
              flags &= ~ICompilationUnit.ENABLE_BINDINGS_RECOVERY;
              compilationUnitDeclaration = CompilationUnitResolver.parse(
                  sourceUnit,
                  searcher,
                  this.compilerOptions,
                  flags);
              needToResolveBindings = false;
            }
          } else {
            compilationUnitDeclaration = CompilationUnitResolver.parse(
                sourceUnit,
                searcher,
                this.compilerOptions,
                flags);
            needToResolveBindings = false;
          }
          CompilationUnit result = CompilationUnitResolver.convert(
            compilationUnitDeclaration,
            sourceUnit.getContents(),
            this.apiLevel,
            this.compilerOptions,
            needToResolveBindings,
            wcOwner,
            needToResolveBindings ? new DefaultBindingResolver.BindingTables() : null,
            flags,
            monitor,
            this.project != null);
          result.setTypeRoot(this.typeRoot);
          return result;
        } finally {
          if (compilationUnitDeclaration != null
              && ((this.bits & CompilationUnitResolver.RESOLVE_BINDING) != 0)) {
            compilationUnitDeclaration.cleanUp();
          }
        }
    }
    throw new IllegalStateException();
  }
View Full Code Here

  // underlying resource is null in the case of a working copy on a class file in a jar
  if (underlyingResource != null)
    unitInfo.timestamp = ((IFile)underlyingResource).getModificationStamp();

  // compute other problems if needed
  CompilationUnitDeclaration compilationUnitDeclaration = null;
  CompilationUnit source = cloneCachingContents();
  try {
    if (computeProblems) {
      if (problems == null) {
        // report problems to the problem requestor
        problems = new HashMap();
        compilationUnitDeclaration = CompilationUnitProblemFinder.process(source, parser, this.owner, problems, createAST, reconcileFlags, pm);
        try {
          perWorkingCopyInfo.beginReporting();
          for (Iterator iteraror = problems.values().iterator(); iteraror.hasNext();) {
            CategorizedProblem[] categorizedProblems = (CategorizedProblem[]) iteraror.next();
            if (categorizedProblems == null) continue;
            for (int i = 0, length = categorizedProblems.length; i < length; i++) {
              perWorkingCopyInfo.acceptProblem(categorizedProblems[i]);
            }
          }
        } finally {
          perWorkingCopyInfo.endReporting();
        }
      } else {
        // collect problems
        compilationUnitDeclaration = CompilationUnitProblemFinder.process(source, parser, this.owner, problems, createAST, reconcileFlags, pm);
      }
    } else {
      compilationUnitDeclaration = parser.parseCompilationUnit(source, true /*full parse to find local elements*/, pm);
    }

    if (createAST) {
      int astLevel = ((ASTHolderCUInfo) info).astLevel;
      org.eclipse.jdt.core.dom.CompilationUnit cu = AST.convertCompilationUnit(astLevel, compilationUnitDeclaration, options, computeProblems, source, reconcileFlags, pm);
      ((ASTHolderCUInfo) info).ast = cu;
    }
  } finally {
      if (compilationUnitDeclaration != null) {
          compilationUnitDeclaration.cleanUp();
      }
  }

  return unitInfo.isStructureKnown();
}
View Full Code Here

    // Find the newest of all these.
    //
    lastModified = 0;
    CompilationUnitProvider newestCup = null;
    for (int i = 0; i < goldenCuds.length; i++) {
      CompilationUnitDeclaration cud = goldenCuds[i];
      ICompilationUnitAdapter icua = (ICompilationUnitAdapter) cud.compilationResult.compilationUnit;
      CompilationUnitProvider cup = icua.getCompilationUnitProvider();
      long cupLastModified = cup.getLastModified();
      if (cupLastModified > lastModified) {
        newestCup = cup;
View Full Code Here

    boolean compilationFailed = false;
    if (goldenCuds.length == 0) {
      compilationFailed = true;
    }
    for (int iCud = 0; iCud < goldenCuds.length; iCud++) {
      CompilationUnitDeclaration cud = goldenCuds[iCud];
      CompilationResult result = cud.compilationResult();
      if (result.hasErrors()) {
        compilationFailed = true;
        // Early out if we don't need to itemize.
        if (!itemizeErrors) {
          break;
View Full Code Here

  public static void reportRebindProblem(DeferredBindingSite site,
      String message) {
    MessageSend messageSend = site.messageSend;
    Scope scope = site.scope;
    // Safe since CUS.referenceContext is set in its constructor.
    CompilationUnitDeclaration cud = scope.compilationUnitScope().referenceContext;
    GWTProblem.recordInCud(messageSend, cud, message, null);
  }
View Full Code Here

  public static void validateCompilationUnits(Set<CompilationUnit> units,
      Set<String> validBinaryTypeNames) {
    for (CompilationUnit unit : units) {
      if (unit.getState() == State.COMPILED) {
        CompilationUnitDeclaration jdtCud = unit.getJdtCud();
        JSORestrictionsChecker.check(jdtCud);
        LongFromJSNIChecker.check(jdtCud);
        BinaryTypeReferenceRestrictionsChecker.check(jdtCud,
            validBinaryTypeNames);
      }
View Full Code Here

    }
   
    private static Parser makeDummyParser(ProblemReporter reporter, String mainTypeName) {
      Parser parser = new Parser(reporter, false);
      CompilationResult cr = new CompilationResult((mainTypeName + ".java").toCharArray(), 0, 1, 0);
      parser.compilationUnit = new CompilationUnitDeclaration(reporter, cr, 0);
      return parser;
    }
View Full Code Here

TOP

Related Classes of org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration

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.