]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/issues/SCLIssuesContentProvider.java
Showing compilation warnings in SCL issue view and editors
[simantics/platform.git] / bundles / org.simantics.scl.ui / src / org / simantics / scl / ui / issues / SCLIssuesContentProvider.java
index 7a5daffdbee0716670932e1358a3f227cf2f8dc4..4772ad5ba7996b89baa875c4cf24db9e70e940e4 100644 (file)
@@ -9,6 +9,7 @@ import org.eclipse.jface.viewers.IStructuredContentProvider;
 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;
@@ -28,7 +29,7 @@ public class SCLIssuesContentProvider implements IStructuredContentProvider {
     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
@@ -64,11 +65,22 @@ public class SCLIssuesContentProvider implements IStructuredContentProvider {
         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();
     }
@@ -133,8 +145,8 @@ public class SCLIssuesContentProvider implements IStructuredContentProvider {
             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;