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;
import gnu.trove.map.hash.THashMap;
public class DeclarationClassification {
+ DModuleHeader moduleHeader;
ArrayList<ImportDeclaration> importsAst = new ArrayList<ImportDeclaration>();
ArrayList<DDataAst> dataTypesAst = new ArrayList<DDataAst>();
ArrayList<DTypeAst> typeAliasesAst = new ArrayList<DTypeAst>();
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());
}
errorLog.log(declaration.location, "Annotations not supported.");
currentAnnotations = new ArrayList<DAnnotationAst>(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));
errorLog.log(declaration.location, "Annotations not supported.");
currentAnnotations = new ArrayList<DAnnotationAst>(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);
}
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) {