diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-01-12 17:42:11 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-01-12 17:42:11 +0000 |
| commit | 89a63ebdd727c099b74d6ffc7be60656decfbeeb (patch) | |
| tree | 678eac21116c29e773363dc3f4758eb853256d82 /src/main/java | |
| parent | 22b9cdfb83afc9b3e7e2ddb1de3e4cdd380858a1 (diff) | |
Extract TypeSubstitutionMap.from()
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/types/ConstructedType.java | 11 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/types/TypeSubstitutionMap.java | 17 |
2 files changed, 18 insertions, 10 deletions
diff --git a/src/main/java/org/shedlang/compiler/types/ConstructedType.java b/src/main/java/org/shedlang/compiler/types/ConstructedType.java index b56e6a85..4a3d941e 100644 --- a/src/main/java/org/shedlang/compiler/types/ConstructedType.java +++ b/src/main/java/org/shedlang/compiler/types/ConstructedType.java @@ -1,6 +1,5 @@ package org.shedlang.compiler.types; -import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @@ -21,14 +20,6 @@ public sealed interface ConstructedType<T extends ConstructibleType> extends Typ } default TypeSubstitutionMap typeSubstitutionMap() { - var map = new HashMap<TypeParam, Type>(); - - for (var argIndex = 0; argIndex < args().size(); argIndex++) { - var param = constructor().params().get(argIndex); - var arg = args().get(argIndex); - map.put(param, arg); - } - - return new TypeSubstitutionMap(map); + return TypeSubstitutionMap.from(constructor().params(), args()); } } diff --git a/src/main/java/org/shedlang/compiler/types/TypeSubstitutionMap.java b/src/main/java/org/shedlang/compiler/types/TypeSubstitutionMap.java index 69cc2dba..6e6bd03a 100644 --- a/src/main/java/org/shedlang/compiler/types/TypeSubstitutionMap.java +++ b/src/main/java/org/shedlang/compiler/types/TypeSubstitutionMap.java @@ -1,5 +1,7 @@ package org.shedlang.compiler.types; +import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Objects; @@ -9,6 +11,21 @@ public class TypeSubstitutionMap { return new TypeSubstitutionMap(Map.ofEntries(map)); } + public static TypeSubstitutionMap from( + List<TypeParam> params, + List<? extends Type> args + ) { + var map = new HashMap<TypeParam, Type>(); + + for (var argIndex = 0; argIndex < args.size(); argIndex++) { + var param = params.get(argIndex); + var arg = args.get(argIndex); + map.put(param, arg); + } + + return new TypeSubstitutionMap(map); + } + private final Map<TypeParam, Type> map; public TypeSubstitutionMap(Map<TypeParam, Type> map) { |
