diff --git a/base/src/main/java/org/arend/typechecking/visitor/DefinitionTypechecker.java b/base/src/main/java/org/arend/typechecking/visitor/DefinitionTypechecker.java index ba7692a7c..8b28e05b1 100644 --- a/base/src/main/java/org/arend/typechecking/visitor/DefinitionTypechecker.java +++ b/base/src/main/java/org/arend/typechecking/visitor/DefinitionTypechecker.java @@ -3012,17 +3012,7 @@ protected Void forDependencies(ClassDefinition unit) { } for (ClassDefinition superClass : typedDef.getSuperClasses()) { - Set added = new HashSet<>(); - for (Map.Entry> entry : superClass.getDefaults()) { - Levels levels = typedDef.getSuperLevels().get(superClass); - if (typedDef.addDefaultIfAbsent(entry.getKey(), entry.getValue().proj1.subst(new ExprSubstitution(), levels == null ? idLevels.makeSubstitution(superClass) : levels.makeSubstitution(superClass)), entry.getValue().proj2)) { - added.add(entry.getKey()); - } - } for (Map.Entry> entry : superClass.getDefaultDependencies().entrySet()) { - if (!added.contains(entry.getKey())) { - continue; - } Set dependencies = entry.getValue(); if (!typedDef.getDefaults().isEmpty()) { Set newDependencies = new HashSet<>(); @@ -3037,6 +3027,13 @@ protected Void forDependencies(ClassDefinition unit) { } typedDef.addDefaultDependencies(entry.getKey(), dependencies); } + Set added = new HashSet<>(); + for (Map.Entry> entry : superClass.getDefaults()) { + Levels levels = typedDef.getSuperLevels().get(superClass); + if (typedDef.addDefaultIfAbsent(entry.getKey(), entry.getValue().proj1.subst(new ExprSubstitution(), levels == null ? idLevels.makeSubstitution(superClass) : levels.makeSubstitution(superClass)), entry.getValue().proj2)) { + added.add(entry.getKey()); + } + } for (Map.Entry> entry : superClass.getDefaultImplDependencies().entrySet()) { if (added.contains(entry.getKey())) { typedDef.addDefaultImplDependencies(entry.getKey(), entry.getValue());