import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Control;
import org.simantics.scl.compiler.errors.CompilationError;
+import org.simantics.scl.compiler.errors.DoesNotExist;
import org.simantics.scl.compiler.errors.Failable;
import org.simantics.scl.compiler.errors.Failure;
import org.simantics.scl.compiler.module.Module;
boolean disposed = false;
AtomicBoolean refreshInProgress = new AtomicBoolean(false);
- THashMap<String, Failure> currentFailures = new THashMap<String, Failure>();
+ THashMap<String, CompilationError[]> currentFailures = new THashMap<String, CompilationError[]>();
THashMap<String, UpdateListener> updateListeners = new THashMap<String, UpdateListener>();
@Override
synchronized(currentFailures) {
if(result instanceof Failure) {
Failure failure = (Failure)result;
- currentFailures.put(moduleName, failure);
+ currentFailures.put(moduleName, failure.errors);
}
- else
+ else if(result == DoesNotExist.INSTANCE) {
if(currentFailures.remove(moduleName) == null)
return;
+ }
+ else {
+ CompilationError[] warnings = result.getResult().getWarnings();
+ if(warnings.length == 0) {
+ if(currentFailures.remove(moduleName) == null)
+ return;
+ }
+ else {
+ currentFailures.put(moduleName, warnings);
+ }
+ }
}
refresh();
}
String[] moduleNames = currentFailures.keySet().toArray(new String[currentFailures.size()]);
Arrays.sort(moduleNames);
for(String moduleName : moduleNames) {
- Failure failure = currentFailures.get(moduleName);
- for(CompilationError error : failure.errors)
+ CompilationError[] errors = currentFailures.get(moduleName);
+ for(CompilationError error : errors)
result.add(new SCLIssuesTableEntry(moduleName, error));
if(result.size() >= MAX_ISSUE_COUNT)
break;