From f1089538f04062f71f530fa27396f6f446a0fc47 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 2 Mar 2024 15:39:10 +0000 Subject: Support implicit effect args --- src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index cff54be0..223323d3 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -401,20 +401,21 @@ public class TypeChecker { var typeSubstitutionMap = argsResult.value().typeSubstitutionMap; context = argsResult.context(); - var receiverHasEffects = !receiverType.effect().equals(Effects.NONE); + var receiverEffect = TypeSubstitution.substituteEffect(receiverType.effect(), typeSubstitutionMap); + var receiverHasEffects = !receiverEffect.equals(Effects.NONE); if (receiverHasEffects && !untyped.hasEffects()) { - throw new CallIsMissingEffectsError(receiverType.effect(), untyped.source()); + throw new CallIsMissingEffectsError(receiverEffect, untyped.source()); } if (!receiverHasEffects && untyped.hasEffects()) { throw new FunctionHasNoEffectsError(untyped.source()); } - if (!isSubEffect(receiverType.effect(), context.effect(), context.toTypeInfos())) { + if (!isSubEffect(receiverEffect, context.effect(), context.toTypeInfos())) { throw new UnexpectedEffectError( context.effect(), - receiverType.effect(), + receiverEffect, untyped.source() ); } -- cgit v1.2.3