]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/DeclarationClassification.java
Merge branch 'feature/funcwrite'
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / compilation / DeclarationClassification.java
index 6c2befb5cdb15c2e72d171cfbc88c0c3663b6972..652adf93efc769cb30cce495d99a53ed665bd35b 100644 (file)
@@ -23,6 +23,7 @@ import org.simantics.scl.compiler.internal.parsing.declarations.DFixityAst;
 import org.simantics.scl.compiler.internal.parsing.declarations.DImportJavaAst;
 import org.simantics.scl.compiler.internal.parsing.declarations.DInstanceAst;
 import org.simantics.scl.compiler.internal.parsing.declarations.DMappingRelationAst;
+import org.simantics.scl.compiler.internal.parsing.declarations.DModuleHeader;
 import org.simantics.scl.compiler.internal.parsing.declarations.DRelationAst;
 import org.simantics.scl.compiler.internal.parsing.declarations.DRuleAst;
 import org.simantics.scl.compiler.internal.parsing.declarations.DTypeAst;
@@ -34,14 +35,11 @@ import org.simantics.scl.compiler.internal.parsing.translation.ProcessedDInstanc
 import org.simantics.scl.compiler.internal.parsing.translation.RelationRepository;
 import org.simantics.scl.compiler.internal.parsing.translation.ValueRepository;
 import org.simantics.scl.compiler.module.ImportDeclaration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import gnu.trove.map.hash.THashMap;
 
 public class DeclarationClassification {
-    private static final Logger LOGGER = LoggerFactory.getLogger(DeclarationClassification.class);
-    
+    DModuleHeader moduleHeader;
     ArrayList<ImportDeclaration> importsAst = new ArrayList<ImportDeclaration>();
     ArrayList<DDataAst> dataTypesAst = new ArrayList<DDataAst>();
     ArrayList<DTypeAst> typeAliasesAst = new ArrayList<DTypeAst>();
@@ -110,6 +108,8 @@ public class DeclarationClassification {
             handle((DMappingRelationAst)declaration);
         else if(declaration instanceof DRelationAst)
             handle((DRelationAst)declaration);
+        else if(declaration instanceof DModuleHeader)
+            handle((DModuleHeader)declaration);
         else
             throw new InternalCompilerError("Unknown declaration " + declaration.getClass().getSimpleName());
     }
@@ -241,7 +241,7 @@ public class DeclarationClassification {
             currentAnnotations = new ArrayList<DAnnotationAst>(2);
         }
         if(declaration.name.name.equals("Eq") || declaration.name.name.equals("Hashable")) {
-            LOGGER.warn("Skipped instance definition for " + declaration.name + " for " + declaration.types[0]);
+               errorLog.logWarning(declaration.location, "Skipped instance definition for " + declaration.name + " for " + declaration.types[0]);
             return;
         }
         instancesAst.add(new ProcessedDInstanceAst(
@@ -255,7 +255,7 @@ public class DeclarationClassification {
             currentAnnotations = new ArrayList<DAnnotationAst>(2);
         }
         if(declaration.name.name.equals("Eq") || declaration.name.name.equals("Hashable")) {
-            LOGGER.warn("Skipped instance definition for " + declaration.name + " for " + declaration.types[0]);
+               errorLog.logWarning(declaration.location, "Skipped instance definition for " + declaration.name + " for " + declaration.types[0]);
             return;
         }
         derivingInstancesAst.add(declaration);
@@ -384,6 +384,10 @@ public class DeclarationClassification {
         mappingRelationsAst.add(declaration);
     }
     
+    public void handle(DModuleHeader declaration) {
+        moduleHeader = declaration;
+    }
+    
     public void addValueDocumentation(String valueName, DDocumentationAst documentation) {
         DDocumentationAst oldDoc = valueDocumentation.put(valueName, documentation);
         if(oldDoc != null) {