Example usage for org.eclipse.jdt.internal.compiler.ast CompilationUnitDeclaration isEmpty

List of usage examples for org.eclipse.jdt.internal.compiler.ast CompilationUnitDeclaration isEmpty

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler.ast CompilationUnitDeclaration isEmpty.

Prototype

public boolean isEmpty() 

Source Link

Usage

From source file:com.codenvy.ide.ext.java.server.internal.core.search.matching.MatchLocator.java

License:Open Source License

/**
 * Add the possibleMatch to the loop// w  w  w .  j ava 2s . c  o m
 *  ->  build compilation unit declarations, their bindings and record their results.
 */
protected boolean parseAndBuildBindings(PossibleMatch possibleMatch, boolean mustResolve) throws CoreException {
    if (this.progressMonitor != null && this.progressMonitor.isCanceled())
        throw new OperationCanceledException();

    try {
        if (BasicSearchEngine.VERBOSE)
            System.out.println("Parsing " + possibleMatch.openable.toStringWithAncestors()); //$NON-NLS-1$

        this.parser.nodeSet = possibleMatch.nodeSet;
        CompilationResult unitResult = new CompilationResult(possibleMatch, 1, 1,
                this.options.maxProblemsPerUnit);
        CompilationUnitDeclaration parsedUnit = this.parser.dietParse(possibleMatch, unitResult);
        if (parsedUnit != null) {
            if (!parsedUnit.isEmpty()) {
                if (mustResolve) {
                    this.lookupEnvironment.buildTypeBindings(parsedUnit, null /*no access restriction*/);
                }
                if (hasAlreadyDefinedType(parsedUnit))
                    return false; // skip type has it is hidden so not visible
                getMethodBodies(parsedUnit, possibleMatch.nodeSet);
                if (this.patternLocator.mayBeGeneric && !mustResolve && possibleMatch.nodeSet.mustResolve) {
                    // special case: possible match node set force resolution although pattern does not
                    // => we need to build types for this compilation unit
                    this.lookupEnvironment.buildTypeBindings(parsedUnit, null /*no access restriction*/);
                }
            }

            // add the possibleMatch with its parsedUnit to matchesToProcess
            possibleMatch.parsedUnit = parsedUnit;
            int size = this.matchesToProcess.length;
            if (this.numberOfMatches == size)
                System.arraycopy(this.matchesToProcess, 0,
                        this.matchesToProcess = new PossibleMatch[size == 0 ? 1 : size * 2], 0,
                        this.numberOfMatches);
            this.matchesToProcess[this.numberOfMatches++] = possibleMatch;
        }
    } finally {
        this.parser.nodeSet = null;
    }
    return true;
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.matching.MatchLocator.java

License:Open Source License

protected void process(PossibleMatch possibleMatch, boolean bindingsWereCreated) throws CoreException {
    this.currentPossibleMatch = possibleMatch;
    CompilationUnitDeclaration unit = possibleMatch.parsedUnit;
    try {// www . ja v  a 2  s. co m
        if (unit.isEmpty()) {
            if (this.currentPossibleMatch.openable instanceof ClassFile) {
                ClassFile classFile = (ClassFile) this.currentPossibleMatch.openable;
                IBinaryType info = null;
                try {
                    info = getBinaryInfo(classFile, classFile.resource());
                } catch (CoreException ce) {
                    // Do nothing
                }
                if (info != null) {
                    boolean mayBeGeneric = this.patternLocator.mayBeGeneric;
                    this.patternLocator.mayBeGeneric = false; // there's no longer generic in class files
                    try {
                        new ClassFileMatchLocator().locateMatches(this, classFile, info);
                    } finally {
                        this.patternLocator.mayBeGeneric = mayBeGeneric;
                    }
                }
            }
            return;
        }
        if (hasAlreadyDefinedType(unit))
            return; // skip type has it is hidden so not visible

        // Move getMethodBodies to #parseAndBuildings(...) method to allow possible match resolution management
        //getMethodBodies(unit);

        boolean mustResolve = (this.pattern.mustResolve || possibleMatch.nodeSet.mustResolve);
        if (bindingsWereCreated && mustResolve) {
            if (unit.types != null) {
                if (BasicSearchEngine.VERBOSE)
                    System.out
                            .println("Resolving " + this.currentPossibleMatch.openable.toStringWithAncestors()); //$NON-NLS-1$

                this.lookupEnvironment.unitBeingCompleted = unit;
                reduceParseTree(unit);

                if (unit.scope != null) {
                    // fault in fields & methods
                    unit.scope.faultInTypes();
                }
                unit.resolve();
            } else if (unit.isPackageInfo()) {
                if (BasicSearchEngine.VERBOSE)
                    System.out
                            .println("Resolving " + this.currentPossibleMatch.openable.toStringWithAncestors()); //$NON-NLS-1$
                unit.resolve();
            }
        }
        reportMatching(unit, mustResolve);
    } catch (AbortCompilation e) {
        if (BasicSearchEngine.VERBOSE) {
            System.out.println("AbortCompilation while resolving unit " + String.valueOf(unit.getFileName())); //$NON-NLS-1$
            e.printStackTrace();
        }
        // could not resolve: report inaccurate matches
        reportMatching(unit, false); // do not resolve when cu has errors
        if (!(e instanceof AbortCompilationUnit)) {
            // problem with class path
            throw e;
        }
    } finally {
        this.lookupEnvironment.unitBeingCompleted = null;
        this.currentPossibleMatch = null;
    }
}

From source file:org.eclipse.jdt.internal.core.search.matching.MatchLocator.java

License:Open Source License

/**
 * Add the possibleMatch to the loop/*from  w w w .  j  av a  2 s .  c o m*/
 *  ->  build compilation unit declarations, their bindings and record their results.
 */
protected boolean parseAndBuildBindings(PossibleMatch possibleMatch, boolean mustResolve) throws CoreException {
    if (this.progressMonitor != null && this.progressMonitor.isCanceled())
        throw new OperationCanceledException();

    try {
        if (BasicSearchEngine.VERBOSE)
            System.out.println("Parsing " + possibleMatch.openable.toStringWithAncestors()); //$NON-NLS-1$

        this.parser.nodeSet = possibleMatch.nodeSet;
        CompilationResult unitResult = new CompilationResult(possibleMatch, 1, 1,
                this.options.maxProblemsPerUnit);
        CompilationUnitDeclaration parsedUnit = this.parser.dietParse(possibleMatch, unitResult);
        if (parsedUnit != null) {
            if (!parsedUnit.isEmpty()) {
                if (mustResolve) {
                    this.lookupEnvironment.buildTypeBindings(parsedUnit, null /*no access restriction*/);
                }
                if (hasAlreadyDefinedType(parsedUnit))
                    return false; // skip type has it is hidden so not visible

                // GROOVY Start
                // old
                // getMethodBodies(parsedUnit, possibleMatch.nodeSet);
                // new
                // Only getMethodBodies for Java files
                if (!LanguageSupportFactory.isInterestingSourceFile(new String(parsedUnit.getFileName()))) {
                    getMethodBodies(parsedUnit, possibleMatch.nodeSet);
                }
                // GROOVY End
                if (this.patternLocator.mayBeGeneric && !mustResolve && possibleMatch.nodeSet.mustResolve) {
                    // special case: possible match node set force resolution although pattern does not
                    // => we need to build types for this compilation unit
                    this.lookupEnvironment.buildTypeBindings(parsedUnit, null /*no access restriction*/);
                }
            }

            // add the possibleMatch with its parsedUnit to matchesToProcess
            possibleMatch.parsedUnit = parsedUnit;
            int size = this.matchesToProcess.length;
            if (this.numberOfMatches == size)
                System.arraycopy(this.matchesToProcess, 0,
                        this.matchesToProcess = new PossibleMatch[size == 0 ? 1 : size * 2], 0,
                        this.numberOfMatches);
            this.matchesToProcess[this.numberOfMatches++] = possibleMatch;
        }
    } finally {
        this.parser.nodeSet = null;
    }
    return true;
}

From source file:org.eclipse.jdt.internal.core.search.matching.MatchLocator.java

License:Open Source License

protected void process(PossibleMatch possibleMatch, boolean bindingsWereCreated) throws CoreException {
    // GROOVY Start
    // Do not process non-Java files.  They use a separate delegated search
    if (LanguageSupportFactory.isInterestingSourceFile(new String(possibleMatch.getFileName()))) {
        try {//from w  ww .ja  v  a  2 s.c o  m
            this.lookupEnvironment.buildTypeBindings(possibleMatch.parsedUnit, null /*no access restriction*/);
        } catch (Throwable t) {
            t.printStackTrace();
        }
        possibleMatch.parsedUnit.resolve();
        return;
    }
    // GROOVY End

    this.currentPossibleMatch = possibleMatch;
    CompilationUnitDeclaration unit = possibleMatch.parsedUnit;
    try {
        if (unit.isEmpty()) {
            if (this.currentPossibleMatch.openable instanceof ClassFile) {
                ClassFile classFile = (ClassFile) this.currentPossibleMatch.openable;
                IBinaryType info = null;
                try {
                    info = getBinaryInfo(classFile, classFile.resource());
                } catch (CoreException ce) {
                    // Do nothing
                }
                if (info != null) {
                    boolean mayBeGeneric = this.patternLocator.mayBeGeneric;
                    this.patternLocator.mayBeGeneric = false; // there's no longer generic in class files
                    try {
                        new ClassFileMatchLocator().locateMatches(this, classFile, info);
                    } finally {
                        this.patternLocator.mayBeGeneric = mayBeGeneric;
                    }
                }
            }
            return;
        }
        if (hasAlreadyDefinedType(unit))
            return; // skip type has it is hidden so not visible

        // Move getMethodBodies to #parseAndBuildings(...) method to allow possible match resolution management
        //getMethodBodies(unit);

        boolean mustResolve = (this.pattern.mustResolve || possibleMatch.nodeSet.mustResolve);
        if (bindingsWereCreated && mustResolve) {
            if (unit.types != null) {
                if (BasicSearchEngine.VERBOSE)
                    System.out
                            .println("Resolving " + this.currentPossibleMatch.openable.toStringWithAncestors()); //$NON-NLS-1$

                this.lookupEnvironment.unitBeingCompleted = unit;
                reduceParseTree(unit);

                if (unit.scope != null) {
                    // fault in fields & methods
                    unit.scope.faultInTypes();
                }
                unit.resolve();
            } else if (unit.isPackageInfo()) {
                if (BasicSearchEngine.VERBOSE)
                    System.out
                            .println("Resolving " + this.currentPossibleMatch.openable.toStringWithAncestors()); //$NON-NLS-1$
                unit.resolve();
            }
        }
        reportMatching(unit, mustResolve);
    } catch (AbortCompilation e) {
        // could not resolve: report inaccurate matches
        reportMatching(unit, false); // do not resolve when cu has errors
        if (!(e instanceof AbortCompilationUnit)) {
            // problem with class path
            throw e;
        }
    } finally {
        this.lookupEnvironment.unitBeingCompleted = null;
        this.currentPossibleMatch = null;
    }
}