This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 219787
Collapse All | Expand All

(-)a/java.source/src/org/netbeans/modules/java/source/indexing/MultiPassCompileWorker.java (-5 / +8 lines)
Lines 293-303 Link Here
293
                        previous.modifiedTypes.addAll(aTypes);
293
                        previous.modifiedTypes.addAll(aTypes);
294
                    }
294
                    }
295
                    ExecutableFilesIndex.DEFAULT.setMainClass(context.getRoot().getURL(), active.indexable.getURL(), main[0]);
295
                    ExecutableFilesIndex.DEFAULT.setMainClass(context.getRoot().getURL(), active.indexable.getURL(), main[0]);
296
                    for (JavaFileObject generated : jt.generate(types)) {
296
                    Iterable<? extends JavaFileObject> generatedFiles = jt.generate(types);
297
                        if (generated instanceof FileObjects.FileBase) {
297
                    if (!active.virtual) {
298
                            previous.createdFiles.add(((FileObjects.FileBase) generated).getFile());
298
                        for (JavaFileObject generated : generatedFiles) {
299
                        } else {
299
                            if (generated instanceof FileObjects.FileBase) {
300
                            // presumably should not happen
300
                                previous.createdFiles.add(((FileObjects.FileBase) generated).getFile());
301
                            } else {
302
                                // presumably should not happen
303
                            }
301
                        }
304
                        }
302
                    }
305
                    }
303
                    JavaCustomIndexer.setErrors(context, active, diagnosticListener);
306
                    JavaCustomIndexer.setErrors(context, active, diagnosticListener);
(-)a/java.source/src/org/netbeans/modules/java/source/indexing/OnePassCompileWorker.java (-5 / +8 lines)
Lines 262-272 Link Here
262
                    modifiedTypes.addAll(aTypes);
262
                    modifiedTypes.addAll(aTypes);
263
                }
263
                }
264
                ExecutableFilesIndex.DEFAULT.setMainClass(context.getRoot().getURL(), active.indexable.getURL(), main[0]);
264
                ExecutableFilesIndex.DEFAULT.setMainClass(context.getRoot().getURL(), active.indexable.getURL(), main[0]);
265
                for (JavaFileObject generated : jt.generate(types)) {
265
                Iterable<? extends JavaFileObject> generatedFiles = jt.generate(types);
266
                    if (generated instanceof FileObjects.FileBase) {
266
                if (!active.virtual) {
267
                        createdFiles.add(((FileObjects.FileBase) generated).getFile());
267
                    for (JavaFileObject generated : generatedFiles) {
268
                    } else {
268
                        if (generated instanceof FileObjects.FileBase) {
269
                        // presumably should not happen
269
                            createdFiles.add(((FileObjects.FileBase) generated).getFile());
270
                        } else {
271
                            // presumably should not happen
272
                        }
270
                    }
273
                    }
271
                }
274
                }
272
                JavaCustomIndexer.setErrors(context, active, dc);
275
                JavaCustomIndexer.setErrors(context, active, dc);
(-)a/java.source/src/org/netbeans/modules/java/source/indexing/SuperOnePassCompileWorker.java (-15 / +35 lines)
Lines 46-51 Link Here
46
import com.sun.source.tree.Tree;
46
import com.sun.source.tree.Tree;
47
import com.sun.tools.javac.api.JavacTaskImpl;
47
import com.sun.tools.javac.api.JavacTaskImpl;
48
import com.sun.tools.javac.code.Symbol.ClassSymbol;
48
import com.sun.tools.javac.code.Symbol.ClassSymbol;
49
import com.sun.tools.javac.code.Symbol.TypeSymbol;
50
import com.sun.tools.javac.comp.AttrContext;
51
import com.sun.tools.javac.comp.Enter;
52
import com.sun.tools.javac.comp.Env;
49
import com.sun.tools.javac.tree.JCTree;
53
import com.sun.tools.javac.tree.JCTree;
50
import com.sun.tools.javac.tree.JCTree.JCClassDecl;
54
import com.sun.tools.javac.tree.JCTree.JCClassDecl;
51
import org.netbeans.lib.nbjavac.services.CancelAbort;
55
import org.netbeans.lib.nbjavac.services.CancelAbort;
Lines 56-61 Link Here
56
import com.sun.tools.javac.util.MissingPlatformError;
60
import com.sun.tools.javac.util.MissingPlatformError;
57
import java.io.File;
61
import java.io.File;
58
import java.util.*;
62
import java.util.*;
63
import java.util.Map.Entry;
59
import java.util.logging.Level;
64
import java.util.logging.Level;
60
import javax.annotation.processing.Processor;
65
import javax.annotation.processing.Processor;
61
import javax.lang.model.element.TypeElement;
66
import javax.lang.model.element.TypeElement;
Lines 103-109 Link Here
103
        final LowMemoryWatcher mem = LowMemoryWatcher.getInstance();
108
        final LowMemoryWatcher mem = LowMemoryWatcher.getInstance();
104
        final DiagnosticListenerImpl dc = new DiagnosticListenerImpl();
109
        final DiagnosticListenerImpl dc = new DiagnosticListenerImpl();
105
        final LinkedList<CompilationUnitTree> trees = new LinkedList<CompilationUnitTree>();
110
        final LinkedList<CompilationUnitTree> trees = new LinkedList<CompilationUnitTree>();
106
        LinkedList<Pair<CompilationUnitTree, CompileTuple>> units = new LinkedList<Pair<CompilationUnitTree, CompileTuple>>();
111
        Map<CompilationUnitTree, CompileTuple> units = new IdentityHashMap<CompilationUnitTree, CompileTuple>();
107
        JavacTaskImpl jt = null;
112
        JavacTaskImpl jt = null;
108
113
109
        boolean nop = true;
114
        boolean nop = true;
Lines 134-141 Link Here
134
                        for (CompilationUnitTree cut : jt.parse(tuple.jfo)) { //TODO: should be exactly one
139
                        for (CompilationUnitTree cut : jt.parse(tuple.jfo)) { //TODO: should be exactly one
135
                            trees.add(cut);
140
                            trees.add(cut);
136
                            if (units != null) {
141
                            if (units != null) {
137
                                Pair<CompilationUnitTree, CompileTuple> unit = Pair.<CompilationUnitTree, CompileTuple>of(cut, tuple);
142
                                units.put(cut, tuple);
138
                                units.add(unit);
139
                            }
143
                            }
140
                            computeFQNs(file2FQNs, cut, tuple);
144
                            computeFQNs(file2FQNs, cut, tuple);
141
                        }
145
                        }
Lines 199-204 Link Here
199
                mem.free();
203
                mem.free();
200
                return ParsingOutput.lowMemory(file2FQNs, addedTypes, createdFiles, finished, modifiedTypes, aptGenerated);
204
                return ParsingOutput.lowMemory(file2FQNs, addedTypes, createdFiles, finished, modifiedTypes, aptGenerated);
201
            }
205
            }
206
            Map<TypeElement, CompileTuple> clazz2Tuple = new IdentityHashMap<TypeElement, CompileTuple>();
207
            Enter enter = Enter.instance(jt.getContext());
208
            for (TypeElement type : types) {
209
                Env<AttrContext> typeEnv = enter.getEnv((TypeSymbol) type);
210
                if (typeEnv == null) {
211
                    JavaIndex.LOG.log(Level.FINE, "No Env for: {0}", type.getQualifiedName());
212
                    continue;
213
                }
214
                clazz2Tuple.put(type, units.get(typeEnv.toplevel));
215
            }
202
            jt.analyze(types);
216
            jt.analyze(types);
203
            if (context.isCancelled()) {
217
            if (context.isCancelled()) {
204
                return null;
218
                return null;
Lines 208-220 Link Here
208
                mem.free();
222
                mem.free();
209
                return ParsingOutput.lowMemory(file2FQNs, addedTypes, createdFiles, finished, modifiedTypes, aptGenerated);
223
                return ParsingOutput.lowMemory(file2FQNs, addedTypes, createdFiles, finished, modifiedTypes, aptGenerated);
210
            }
224
            }
211
            for (Pair<CompilationUnitTree, CompileTuple> unit : units) {
225
            for (Entry<CompilationUnitTree, CompileTuple> unit : units.entrySet()) {
212
                CompileTuple active = unit.second;
226
                CompileTuple active = unit.getValue();
213
                if (aptEnabled) {
227
                if (aptEnabled) {
214
                    JavaCustomIndexer.addAptGenerated(context, javaContext, active, aptGenerated);
228
                    JavaCustomIndexer.addAptGenerated(context, javaContext, active, aptGenerated);
215
                }
229
                }
216
                List<TypeElement> activeTypes = new ArrayList<TypeElement>();
230
                List<TypeElement> activeTypes = new ArrayList<TypeElement>();
217
                for (Tree tree : unit.first.getTypeDecls()) {
231
                for (Tree tree : unit.getKey().getTypeDecls()) {
218
                    if (tree instanceof JCTree && ((JCTree)tree).getTag() == JCTree.CLASSDEF) {
232
                    if (tree instanceof JCTree && ((JCTree)tree).getTag() == JCTree.CLASSDEF) {
219
                        ClassSymbol sym = ((JCClassDecl)tree).sym;
233
                        ClassSymbol sym = ((JCClassDecl)tree).sym;
220
                        if (sym != null)
234
                        if (sym != null)
Lines 224-233 Link Here
224
                javaContext.getFQNs().set(activeTypes, active.indexable.getURL());
238
                javaContext.getFQNs().set(activeTypes, active.indexable.getURL());
225
                boolean[] main = new boolean[1];
239
                boolean[] main = new boolean[1];
226
                if (javaContext.getCheckSums().checkAndSet(active.indexable.getURL(), activeTypes, jt.getElements()) || context.isSupplementaryFilesIndexing()) {
240
                if (javaContext.getCheckSums().checkAndSet(active.indexable.getURL(), activeTypes, jt.getElements()) || context.isSupplementaryFilesIndexing()) {
227
                    javaContext.analyze(Collections.singleton(unit.first), jt, fileManager, unit.second, addedTypes, main);
241
                    javaContext.analyze(Collections.singleton(unit.getKey()), jt, fileManager, unit.getValue(), addedTypes, main);
228
                } else {
242
                } else {
229
                    final Set<ElementHandle<TypeElement>> aTypes = new HashSet<ElementHandle<TypeElement>>();
243
                    final Set<ElementHandle<TypeElement>> aTypes = new HashSet<ElementHandle<TypeElement>>();
230
                    javaContext.analyze(Collections.singleton(unit.first), jt, fileManager, unit.second, aTypes, main);
244
                    javaContext.analyze(Collections.singleton(unit.getKey()), jt, fileManager, unit.getValue(), aTypes, main);
231
                    addedTypes.addAll(aTypes);
245
                    addedTypes.addAll(aTypes);
232
                    modifiedTypes.addAll(aTypes);
246
                    modifiedTypes.addAll(aTypes);
233
                }
247
                }
Lines 241-255 Link Here
241
                mem.free();
255
                mem.free();
242
                return ParsingOutput.lowMemory(file2FQNs, addedTypes, createdFiles, finished, modifiedTypes, aptGenerated);
256
                return ParsingOutput.lowMemory(file2FQNs, addedTypes, createdFiles, finished, modifiedTypes, aptGenerated);
243
            }
257
            }
244
            for (JavaFileObject generated : jt.generate(types)) {
258
            for (TypeElement type : types) {
245
                if (generated instanceof FileObjects.FileBase) {
259
                Iterable<? extends JavaFileObject> generatedFiles = jt.generate(Collections.singletonList(type));
246
                    createdFiles.add(((FileObjects.FileBase) generated).getFile());
260
                CompileTuple unit = clazz2Tuple.get(type);
247
                } else {
261
                if (unit == null || !unit.virtual) {
248
                    // presumably should not happen
262
                    for (JavaFileObject generated : generatedFiles) {
263
                        if (generated instanceof FileObjects.FileBase) {
264
                            createdFiles.add(((FileObjects.FileBase) generated).getFile());
265
                        } else {
266
                            // presumably should not happen
267
                        }
268
                    }
249
                }
269
                }
250
            }
270
            }
251
            for (Pair<CompilationUnitTree, CompileTuple> unit : units) {
271
            for (Entry<CompilationUnitTree, CompileTuple> unit : units.entrySet()) {
252
                CompileTuple active = unit.second;
272
                CompileTuple active = unit.getValue();
253
                JavaCustomIndexer.setErrors(context, active, dc);
273
                JavaCustomIndexer.setErrors(context, active, dc);
254
                finished.add(active.indexable);
274
                finished.add(active.indexable);
255
            }
275
            }

Return to bug 219787