X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Fcompilation%2FDeclarationClassification.java;h=652adf93efc769cb30cce495d99a53ed665bd35b;hp=54f0bb7d84a500f6a5967d7e2463794647c5f80a;hb=c26409b1caf2f1e560d37c5befd11b442399c3fe;hpb=969bd23cab98a79ca9101af33334000879fb60c5 diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/DeclarationClassification.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/DeclarationClassification.java index 54f0bb7d8..652adf93e 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/DeclarationClassification.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/DeclarationClassification.java @@ -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; @@ -38,6 +39,7 @@ import org.simantics.scl.compiler.module.ImportDeclaration; import gnu.trove.map.hash.THashMap; public class DeclarationClassification { + DModuleHeader moduleHeader; ArrayList importsAst = new ArrayList(); ArrayList dataTypesAst = new ArrayList(); ArrayList typeAliasesAst = new ArrayList(); @@ -69,8 +71,8 @@ public class DeclarationClassification { ErrorLog errorLog; - public DeclarationClassification(ErrorLog errorLog) { - this.errorLog = errorLog; + public DeclarationClassification(CompilationContext compilationContext) { + this.errorLog = compilationContext.errorLog; } public void handle(DeclarationAst declaration) { @@ -106,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()); } @@ -236,6 +240,10 @@ public class DeclarationClassification { errorLog.log(declaration.location, "Annotations not supported."); currentAnnotations = new ArrayList(2); } + if(declaration.name.name.equals("Eq") || declaration.name.name.equals("Hashable")) { + errorLog.logWarning(declaration.location, "Skipped instance definition for " + declaration.name + " for " + declaration.types[0]); + return; + } instancesAst.add(new ProcessedDInstanceAst( declaration, valueDefs)); @@ -246,6 +254,10 @@ public class DeclarationClassification { errorLog.log(declaration.location, "Annotations not supported."); currentAnnotations = new ArrayList(2); } + if(declaration.name.name.equals("Eq") || declaration.name.name.equals("Hashable")) { + errorLog.logWarning(declaration.location, "Skipped instance definition for " + declaration.name + " for " + declaration.types[0]); + return; + } derivingInstancesAst.add(declaration); } @@ -372,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) {