Lines 180-187
Link Here
|
180 |
|
180 |
|
181 |
//Listener support |
181 |
//Listener support |
182 |
private final ChangeSupport listeners = new ChangeSupport(this); |
182 |
private final ChangeSupport listeners = new ChangeSupport(this); |
183 |
//Cancelling of parser & index |
183 |
//Cancelling of parser |
184 |
private final AtomicBoolean canceled = new AtomicBoolean(); |
184 |
private final AtomicBoolean parserCanceled = new AtomicBoolean(); |
|
|
185 |
//Cancelling of index |
186 |
private final AtomicBoolean indexCanceled = new AtomicBoolean(); |
187 |
|
185 |
//When true the parser is a private copy not used by the parsing API, see JavaSourceAccessor.createCompilationController |
188 |
//When true the parser is a private copy not used by the parsing API, see JavaSourceAccessor.createCompilationController |
186 |
private final boolean privateParser; |
189 |
private final boolean privateParser; |
187 |
//File processed by this javac |
190 |
//File processed by this javac |
Lines 323-329
Link Here
|
323 |
assert task != null; |
326 |
assert task != null; |
324 |
assert privateParser || Utilities.holdsParserLock(); |
327 |
assert privateParser || Utilities.holdsParserLock(); |
325 |
parseId++; |
328 |
parseId++; |
326 |
canceled.set(false); |
329 |
parserCanceled.set(false); |
|
|
330 |
indexCanceled.set(false); |
327 |
LOGGER.log(Level.FINE, "parse: task: {0}\n{1}", new Object[]{ //NOI18N |
331 |
LOGGER.log(Level.FINE, "parse: task: {0}\n{1}", new Object[]{ //NOI18N |
328 |
task.toString(), |
332 |
task.toString(), |
329 |
snapshot == null ? "null" : snapshot.getText()}); //NOI18N |
333 |
snapshot == null ? "null" : snapshot.getText()}); //NOI18N |
Lines 437-443
Link Here
|
437 |
} |
441 |
} |
438 |
} |
442 |
} |
439 |
if (reachedPhase.compareTo(requiredPhase)>=0) { |
443 |
if (reachedPhase.compareTo(requiredPhase)>=0) { |
440 |
Index.cancel.set(canceled); |
444 |
Index.cancel.set(indexCanceled); |
441 |
result = new JavacParserResult(JavaSourceAccessor.getINSTANCE().createCompilationInfo(ciImpl)); |
445 |
result = new JavacParserResult(JavaSourceAccessor.getINSTANCE().createCompilationInfo(ciImpl)); |
442 |
} |
446 |
} |
443 |
} |
447 |
} |
Lines 466-473
Link Here
|
466 |
} |
470 |
} |
467 |
|
471 |
|
468 |
@Override |
472 |
@Override |
469 |
public void cancel () { |
473 |
public void cancel (final @NonNull CancelReason reason, final @NonNull SourceModificationEvent event) { |
470 |
canceled.set(true); |
474 |
indexCanceled.set(true); |
|
|
475 |
if (reason == CancelReason.SOURCE_MODIFICATION_EVENT && event.sourceChanged()) { |
476 |
parserCanceled.set(true); |
477 |
} |
471 |
} |
478 |
} |
472 |
|
479 |
|
473 |
public void resultFinished (boolean isCancelable) { |
480 |
public void resultFinished (boolean isCancelable) { |
Lines 514-520
Link Here
|
514 |
Phase currentPhase = currentInfo.getPhase(); |
521 |
Phase currentPhase = currentInfo.getPhase(); |
515 |
try { |
522 |
try { |
516 |
if (currentPhase.compareTo(Phase.PARSED)<0 && phase.compareTo(Phase.PARSED)>=0 && phase.compareTo(parserError)<=0) { |
523 |
if (currentPhase.compareTo(Phase.PARSED)<0 && phase.compareTo(Phase.PARSED)>=0 && phase.compareTo(parserError)<=0) { |
517 |
if (cancellable && canceled.get()) { |
524 |
if (cancellable && parserCanceled.get()) { |
518 |
//Keep the currentPhase unchanged, it may happen that an userActionTask |
525 |
//Keep the currentPhase unchanged, it may happen that an userActionTask |
519 |
//runnig after the phace completion task may still use it. |
526 |
//runnig after the phace completion task may still use it. |
520 |
return Phase.MODIFIED; |
527 |
return Phase.MODIFIED; |
Lines 536-542
Link Here
|
536 |
assert !it.hasNext(); |
543 |
assert !it.hasNext(); |
537 |
final Document doc = listener == null ? null : listener.document; |
544 |
final Document doc = listener == null ? null : listener.document; |
538 |
if (doc != null && supportsReparse) { |
545 |
if (doc != null && supportsReparse) { |
539 |
FindMethodRegionsVisitor v = new FindMethodRegionsVisitor(doc,Trees.instance(currentInfo.getJavacTask()).getSourcePositions(),this.canceled); |
546 |
FindMethodRegionsVisitor v = new FindMethodRegionsVisitor(doc,Trees.instance(currentInfo.getJavacTask()).getSourcePositions(),this.parserCanceled); |
540 |
v.visit(unit, null); |
547 |
v.visit(unit, null); |
541 |
synchronized (positions) { |
548 |
synchronized (positions) { |
542 |
positions.clear(); |
549 |
positions.clear(); |
Lines 552-558
Link Here
|
552 |
logTime (currentFile,currentPhase,(end-start)); |
559 |
logTime (currentFile,currentPhase,(end-start)); |
553 |
} |
560 |
} |
554 |
if (currentPhase == Phase.PARSED && phase.compareTo(Phase.ELEMENTS_RESOLVED)>=0 && phase.compareTo(parserError)<=0) { |
561 |
if (currentPhase == Phase.PARSED && phase.compareTo(Phase.ELEMENTS_RESOLVED)>=0 && phase.compareTo(parserError)<=0) { |
555 |
if (cancellable && canceled.get()) { |
562 |
if (cancellable && parserCanceled.get()) { |
556 |
return Phase.MODIFIED; |
563 |
return Phase.MODIFIED; |
557 |
} |
564 |
} |
558 |
long start = System.currentTimeMillis(); |
565 |
long start = System.currentTimeMillis(); |
Lines 562-568
Link Here
|
562 |
logTime(currentInfo.getFileObject(),currentPhase,(end-start)); |
569 |
logTime(currentInfo.getFileObject(),currentPhase,(end-start)); |
563 |
} |
570 |
} |
564 |
if (currentPhase == Phase.ELEMENTS_RESOLVED && phase.compareTo(Phase.RESOLVED)>=0 && phase.compareTo(parserError)<=0) { |
571 |
if (currentPhase == Phase.ELEMENTS_RESOLVED && phase.compareTo(Phase.RESOLVED)>=0 && phase.compareTo(parserError)<=0) { |
565 |
if (cancellable && canceled.get()) { |
572 |
if (cancellable && parserCanceled.get()) { |
566 |
return Phase.MODIFIED; |
573 |
return Phase.MODIFIED; |
567 |
} |
574 |
} |
568 |
long start = System.currentTimeMillis (); |
575 |
long start = System.currentTimeMillis (); |
Lines 1030-1036
Link Here
|
1030 |
|
1037 |
|
1031 |
@Override |
1038 |
@Override |
1032 |
public boolean isCanceled() { |
1039 |
public boolean isCanceled() { |
1033 |
return mayCancel.get() && parser.canceled.get(); |
1040 |
return mayCancel.get() && parser.parserCanceled.get(); |
1034 |
} |
1041 |
} |
1035 |
} |
1042 |
} |
1036 |
|
1043 |
|