From e8cb6f9ad2109659611fc4e2fab22215133411f3 Mon Sep 17 00:00:00 2001 From: Grigorii Kirgizov Date: Wed, 18 Dec 2019 19:32:50 +0300 Subject: [PATCH] Add rule for determining correct type to bind inference variable to. Fixes MPSCR-13. The inferred type can be either capture or type variable. This logic is covered by a new rule 'inferFromCapture'. For examples see 'Bounds' test sample. This inference is used in call arguments type inference. It happens on cases when bounds arise from several places: (a) bounds for inference variables from type vars declared in method signature (hasBound constraint) (b) bounds of type vars used as arguments to call (typeVariableType term wiht bounds inside) (c) bounds from captures on type variables from case (b), which come in the form of 'captureOf' term --- .../models/service.mps | 2 +- .../jetbrains.mps.baseLanguageExt.types.mps | 551 ++++++++++++++++-- 2 files changed, 503 insertions(+), 50 deletions(-) diff --git a/coderules/solutions/jetbrains.mps.coderules/models/service.mps b/coderules/solutions/jetbrains.mps.coderules/models/service.mps index 635a4940..82cfabc5 100644 --- a/coderules/solutions/jetbrains.mps.coderules/models/service.mps +++ b/coderules/solutions/jetbrains.mps.coderules/models/service.mps @@ -2405,7 +2405,7 @@ - + diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/models/jetbrains.mps.baseLanguageExt.types.mps b/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/models/jetbrains.mps.baseLanguageExt.types.mps index 76bded3e..637f56ce 100644 --- a/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/models/jetbrains.mps.baseLanguageExt.types.mps +++ b/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/models/jetbrains.mps.baseLanguageExt.types.mps @@ -14921,6 +14921,21 @@ + + + + + + + + + + + + + + + @@ -15419,8 +15434,442 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -15513,91 +15962,95 @@ - - - - - - + + + + + + + + + + - + - + - + - - - + + + - - + + - - + + - - - - + + + + - - + + - - + + - - - - - - + + + + + + - - - - + + + + - - - - + + + + - - + + - - + + - - - - + + + + - - + +