From f9ca9f27661bc7cf80d0fa054e05642ba18cc15a Mon Sep 17 00:00:00 2001 From: Grigorii Kirgizov Date: Tue, 23 Jun 2020 21:31:34 +0300 Subject: [PATCH] Handle usedDataHash computation for macros Fixes IncrClosureInference.changeFunctionalInterfaceParam test. Temporary rules built as macro applications weren't computing hash due to origin!=null condition. Also macro inputs weren't processed. Stable hash for TypeVarSubstitution is defined because it's used in macro args. In general, any classes used as constraint/predicate/macro args must adhere to stable hashCode() contract: hash should change if there're important changes that may influence typechecking result. Otherwise there may be unnecessary incremental recomputations. Relevant for MPSCR-62 --- .../generator/template/main@generator.mps | 51 ++- .../jetbrains.mps.lang.coderules.template.mps | 308 ++++++++---------- .../jetbrains.mps.baseLanguageExt.types.mps | 79 +++++ 3 files changed, 273 insertions(+), 165 deletions(-) diff --git a/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps b/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps index 468db288..f03d857e 100644 --- a/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps +++ b/coderules/languages/jetbrains.mps.lang.coderules/generator/template/main@generator.mps @@ -13875,6 +13875,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -14441,7 +14490,7 @@ - + diff --git a/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.template.mps b/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.template.mps index 53b33f93..68ae1d32 100644 --- a/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.template.mps +++ b/coderules/solutions/jetbrains.mps.lang.coderules.template/models/jetbrains.mps.lang.coderules.template.mps @@ -275,6 +275,7 @@ + @@ -3403,76 +3404,50 @@ - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + - - @@ -3564,41 +3539,35 @@ - + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - + + @@ -4262,40 +4231,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + @@ -4392,6 +4331,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4555,65 +4546,54 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - + + - - - + + + - + - - - + + + - + + + + + + + + + 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 b5689b3c..8c32c730 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 @@ -154,6 +154,7 @@ + @@ -683,6 +684,9 @@ + + + @@ -29968,6 +29972,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +