Check compatability for eq/neq operators, forbid null to prim conversion (MPSCR-3)

Introduced a variation of conversion relation with a bit stricter boxing, needed for eq/neq.
e.g. suppose { (Number n, float f) => n == f } here f shouldn't be boxed.
This commit is contained in:
Grigorii Kirgizov 2019-12-26 17:57:59 +03:00
parent 52af2d527a
commit 1b79c2b548
3 changed files with 1522 additions and 446 deletions

View File

@ -183,6 +183,7 @@
<child id="1081773367579" name="rightExpression" index="3uHU7w" />
<child id="1081773367580" name="leftExpression" index="3uHU7B" />
</concept>
<concept id="1073239437375" name="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" flags="nn" index="3y3z36" />
<concept id="1184950988562" name="jetbrains.mps.baseLanguage.structure.ArrayCreator" flags="nn" index="3$_iS1">
<child id="1184951007469" name="componentType" index="3$_nBY" />
<child id="1184952969026" name="dimensionExpression" index="3$GQph" />
@ -5454,6 +5455,19 @@
<node concept="312cEu" id="5XJPBczwaPw" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="Foo" />
<node concept="3clFb_" id="2i6cuYQX5py" role="jymVt">
<property role="TrG5h" value="acceptNumber" />
<node concept="3clFbS" id="2i6cuYQX5p_" role="3clF47" />
<node concept="3Tm1VV" id="2i6cuYQX4k6" role="1B3o_S" />
<node concept="3cqZAl" id="2i6cuYQX5fL" role="3clF45" />
<node concept="37vLTG" id="2i6cuYQX6pc" role="3clF46">
<property role="TrG5h" value="n" />
<node concept="3uibUv" id="2i6cuYQX6pb" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~Number" resolve="Number" />
</node>
</node>
</node>
<node concept="2tJIrI" id="2i6cuYQXbub" role="jymVt" />
<node concept="3clFb_" id="k8UccHWkb8" role="jymVt">
<property role="TrG5h" value="primboolean" />
<node concept="37vLTG" id="k8UccHWlHG" role="3clF46">
@ -5464,7 +5478,6 @@
<node concept="3Tm1VV" id="k8UccHWh4K" role="1B3o_S" />
<node concept="3cqZAl" id="k8UccHWiNe" role="3clF45" />
</node>
<node concept="2tJIrI" id="5XJPBczwaPC" role="jymVt" />
<node concept="3clFb_" id="5XJPBczwaS7" role="jymVt">
<property role="TrG5h" value="primchar" />
<node concept="37vLTG" id="5XJPBczwaSk" role="3clF46">
@ -6027,6 +6040,21 @@
</node>
</node>
</node>
<node concept="3clFbF" id="2i6cuYQXdzB" role="3cqZAp">
<node concept="2OqwBi" id="2i6cuYQXdzC" role="3clFbG">
<node concept="2ShNRf" id="2i6cuYQXdzD" role="2Oq$k0">
<node concept="HV5vD" id="2i6cuYQXdzE" role="2ShVmc">
<ref role="HV5vE" node="5XJPBczwaPw" resolve="PrimitiveTypes.Foo" />
</node>
</node>
<node concept="liA8E" id="2i6cuYQXdzF" role="2OqNvi">
<ref role="37wK5l" node="2i6cuYQX5py" resolve="acceptNumber" />
<node concept="37vLTw" id="2i6cuYQXdzG" role="37wK5m">
<ref role="3cqZAo" node="5XJPBczO7Ey" resolve="f" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="5XJPBczXGN4" role="jymVt" />
@ -6439,6 +6467,21 @@
</node>
</node>
</node>
<node concept="3clFbF" id="2i6cuYQXfdd" role="3cqZAp">
<node concept="2OqwBi" id="2i6cuYQXfde" role="3clFbG">
<node concept="2ShNRf" id="2i6cuYQXfdf" role="2Oq$k0">
<node concept="HV5vD" id="2i6cuYQXfdg" role="2ShVmc">
<ref role="HV5vE" node="5XJPBczwaPw" resolve="PrimitiveTypes.Foo" />
</node>
</node>
<node concept="liA8E" id="2i6cuYQXfdh" role="2OqNvi">
<ref role="37wK5l" node="2i6cuYQX5py" resolve="acceptNumber" />
<node concept="37vLTw" id="2i6cuYQXfdi" role="37wK5m">
<ref role="3cqZAo" node="5XJPBczXGA0" resolve="f" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="5XJPBczW1m3" role="jymVt" />
@ -6838,6 +6881,21 @@
</node>
</node>
</node>
<node concept="3clFbF" id="2i6cuYQXgSs" role="3cqZAp">
<node concept="2OqwBi" id="2i6cuYQXgSt" role="3clFbG">
<node concept="2ShNRf" id="2i6cuYQXgSu" role="2Oq$k0">
<node concept="HV5vD" id="2i6cuYQXgSv" role="2ShVmc">
<ref role="HV5vE" node="5XJPBczwaPw" resolve="PrimitiveTypes.Foo" />
</node>
</node>
<node concept="liA8E" id="2i6cuYQXgSw" role="2OqNvi">
<ref role="37wK5l" node="2i6cuYQX5py" resolve="acceptNumber" />
<node concept="2$xPTn" id="2i6cuYQXgSx" role="37wK5m">
<property role="2$xPTl" value="1.1f" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="7AyqXCd$LNG" role="jymVt" />
@ -7270,6 +7328,16 @@
<node concept="3clFbT" id="pupwRqgNSb" role="33vP2m" />
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQWUUv" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQWUUy" role="3cpWs9">
<property role="TrG5h" value="bnull" />
<node concept="10P_77" id="2i6cuYQWUUt" role="1tU5fm" />
<node concept="10Nm6u" id="2i6cuYQWV6K" role="33vP2m" />
<node concept="1U20sH" id="2i6cuYQWV7Y" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
<node concept="3cpWs8" id="5XJPBczWhAM" role="3cqZAp">
<node concept="3cpWsn" id="5XJPBczWhAP" role="3cpWs9">
<property role="TrG5h" value="ca" />
@ -7552,6 +7620,27 @@
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQWWyY" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQWWz1" role="3cpWs9">
<property role="TrG5h" value="dn" />
<node concept="10P55v" id="2i6cuYQWWyW" role="1tU5fm" />
<node concept="10Nm6u" id="2i6cuYQWWLp" role="33vP2m" />
<node concept="1U20sH" id="2i6cuYQWWPy" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXjh3" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXjh4" role="3cpWs9">
<property role="TrG5h" value="num" />
<node concept="3uibUv" id="2i6cuYQXjh5" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~Number" resolve="Number" />
</node>
<node concept="3b6qkQ" id="2i6cuYQXjTT" role="33vP2m">
<property role="$nhwW" value="1.1" />
</node>
</node>
</node>
<node concept="3clFbF" id="5XJPBczXwKK" role="3cqZAp">
<node concept="2OqwBi" id="5XJPBczXwKH" role="3clFbG">
<node concept="10M0yZ" id="5XJPBczXwKI" role="2Oq$k0">
@ -7677,6 +7766,15 @@
<node concept="3clFbT" id="pupwRqgYCq" role="33vP2m" />
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQWXqp" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQWXqq" role="3cpWs9">
<property role="TrG5h" value="bnull" />
<node concept="3uibUv" id="2i6cuYQWXqr" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~Boolean" resolve="Boolean" />
</node>
<node concept="10Nm6u" id="2i6cuYQWYwH" role="33vP2m" />
</node>
</node>
<node concept="3cpWs8" id="7AyqXCd$XUb" role="3cqZAp">
<node concept="3cpWsn" id="7AyqXCd$XUc" role="3cpWs9">
<property role="TrG5h" value="ca" />
@ -8024,6 +8122,15 @@
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQWZ5H" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQWZ5I" role="3cpWs9">
<property role="TrG5h" value="dn" />
<node concept="3uibUv" id="2i6cuYQWZ5J" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~Double" resolve="Double" />
</node>
<node concept="10Nm6u" id="2i6cuYQWZsp" role="33vP2m" />
</node>
</node>
<node concept="3clFbF" id="7AyqXCd$XW1" role="3cqZAp">
<node concept="2OqwBi" id="7AyqXCd$XW2" role="3clFbG">
<node concept="10M0yZ" id="7AyqXCd$XW3" role="2Oq$k0">
@ -10065,5 +10172,693 @@
</node>
<node concept="3Tm1VV" id="2i6cuYQqrTN" role="1B3o_S" />
</node>
<node concept="312cEu" id="2i6cuYQukZX">
<property role="TrG5h" value="Operators" />
<node concept="2tJIrI" id="2i6cuYQulrC" role="jymVt" />
<node concept="312cEu" id="2i6cuYQut3Q" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="A" />
<node concept="3Tm1VV" id="2i6cuYQut3R" role="1B3o_S" />
</node>
<node concept="312cEu" id="2i6cuYQusU2" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="B" />
<node concept="3Tm1VV" id="2i6cuYQusSw" role="1B3o_S" />
<node concept="3uibUv" id="2i6cuYQutk4" role="1zkMxy">
<ref role="3uigEE" node="2i6cuYQut3Q" resolve="Operators.A" />
</node>
</node>
<node concept="312cEu" id="2i6cuYQutu3" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="C" />
<node concept="3Tm1VV" id="2i6cuYQutu4" role="1B3o_S" />
<node concept="3uibUv" id="2i6cuYQutG4" role="1zkMxy">
<ref role="3uigEE" node="2i6cuYQusU2" resolve="Operators.B" />
</node>
</node>
<node concept="2tJIrI" id="2i6cuYQusJr" role="jymVt" />
<node concept="3clFb_" id="2i6cuYQulBg" role="jymVt">
<property role="TrG5h" value="equalities" />
<node concept="3clFbS" id="2i6cuYQulBj" role="3clF47">
<node concept="3cpWs8" id="2i6cuYQumog" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQumoj" role="3cpWs9">
<property role="TrG5h" value="beq1" />
<node concept="10P_77" id="2i6cuYQumof" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQumEx" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQumRe" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQulS2" resolve="d" />
</node>
<node concept="37vLTw" id="2i6cuYQumJ1" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQulNt" resolve="f" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQumWj" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQumWk" role="3cpWs9">
<property role="TrG5h" value="beq2" />
<node concept="10P_77" id="2i6cuYQumWl" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQumWm" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQumWn" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQulS2" resolve="d" />
</node>
<node concept="37vLTw" id="2i6cuYQupa$" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQum0z" resolve="i" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQumW_" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQumWA" role="3cpWs9">
<property role="TrG5h" value="beq3" />
<node concept="10P_77" id="2i6cuYQumWB" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQumWC" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQumWE" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQulNt" resolve="f" />
</node>
<node concept="1U20sH" id="2i6cuYQunen" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
<node concept="37vLTw" id="2i6cuYQunOi" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQulJi" resolve="s" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQumWX" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQumWY" role="3cpWs9">
<property role="TrG5h" value="beq4" />
<node concept="10P_77" id="2i6cuYQumWZ" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQumX0" role="33vP2m">
<node concept="1U20sH" id="2i6cuYQunjo" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
<node concept="37vLTw" id="2i6cuYQunog" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQulJi" resolve="s" />
</node>
<node concept="37vLTw" id="2i6cuYQuo4V" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQum0z" resolve="i" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2i6cuYQuzwd" role="3cqZAp" />
<node concept="3cpWs8" id="2i6cuYQuuSP" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQuuSS" role="3cpWs9">
<property role="TrG5h" value="beq5" />
<node concept="10P_77" id="2i6cuYQuuSN" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQuvIk" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQuvBy" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQuvai" resolve="a" />
</node>
<node concept="37vLTw" id="2i6cuYQuvSc" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQuvpO" resolve="c" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQuvWK" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQuvWL" role="3cpWs9">
<property role="TrG5h" value="beq5r" />
<node concept="10P_77" id="2i6cuYQuvWM" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQuvWN" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQuw2$" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQuvpO" resolve="c" />
</node>
<node concept="37vLTw" id="2i6cuYQuw7k" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQuvai" resolve="a" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQuwvV" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQuwvW" role="3cpWs9">
<property role="TrG5h" value="beq6" />
<node concept="10P_77" id="2i6cuYQuwvX" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQuwvY" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQux7X" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQuvai" resolve="a" />
</node>
<node concept="37vLTw" id="2i6cuYQuyYA" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQuxxC" resolve="n" />
</node>
<node concept="1U20sH" id="2i6cuYQuzcF" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQuww1" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQuww2" role="3cpWs9">
<property role="TrG5h" value="beq6r" />
<node concept="10P_77" id="2i6cuYQuww3" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQuww4" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQuww6" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQuvai" resolve="a" />
</node>
<node concept="37vLTw" id="2i6cuYQuz7Z" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQuxxC" resolve="n" />
</node>
<node concept="1U20sH" id="2i6cuYQu$y_" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2i6cuYQuqyS" role="3cqZAp" />
<node concept="3SKdUt" id="2i6cuYQygAH" role="3cqZAp">
<node concept="1PaTwC" id="2i6cuYQygAI" role="3ndbpf">
<node concept="3oM_SD" id="2i6cuYQygAK" role="1PaTwD">
<property role="3oM_SC" value="note" />
</node>
<node concept="3oM_SD" id="2i6cuYQygGp" role="1PaTwD">
<property role="3oM_SC" value="this" />
</node>
<node concept="3oM_SD" id="2i6cuYQygKn" role="1PaTwD">
<property role="3oM_SC" value="case," />
</node>
<node concept="3oM_SD" id="2i6cuYQygOu" role="1PaTwD">
<property role="3oM_SC" value="boxing" />
</node>
<node concept="3oM_SD" id="2i6cuYQyh0s" role="1PaTwD">
<property role="3oM_SC" value="shouldn't" />
</node>
<node concept="3oM_SD" id="2i6cuYQyj_W" role="1PaTwD">
<property role="3oM_SC" value="be" />
</node>
<node concept="3oM_SD" id="2i6cuYQyh4t" role="1PaTwD">
<property role="3oM_SC" value="implicitly" />
</node>
<node concept="3oM_SD" id="2i6cuYQyhsB" role="1PaTwD">
<property role="3oM_SC" value="applied" />
</node>
<node concept="3oM_SD" id="2i6cuYQyhgA" role="1PaTwD">
<property role="3oM_SC" value="here" />
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQu$S9" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQu$Sc" role="3cpWs9">
<property role="TrG5h" value="beq7" />
<node concept="10P_77" id="2i6cuYQu$S7" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQu_eU" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQu_jK" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQulNt" resolve="f" />
</node>
<node concept="37vLTw" id="2i6cuYQu_x5" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQuxxC" resolve="n" />
</node>
<node concept="1U20sH" id="2i6cuYQuAVW" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQu_C$" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQu_C_" role="3cpWs9">
<property role="TrG5h" value="beq7r" />
<node concept="10P_77" id="2i6cuYQu_CA" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQu_CB" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQu_Nc" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQulNt" resolve="f" />
</node>
<node concept="37vLTw" id="2i6cuYQu_Wh" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQuxxC" resolve="n" />
</node>
<node concept="1U20sH" id="2i6cuYQuAQN" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQuBeu" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQuBev" role="3cpWs9">
<property role="TrG5h" value="beq8" />
<node concept="10P_77" id="2i6cuYQuBew" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQuBex" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQuBl$" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQuAwa" resolve="ff" />
</node>
<node concept="37vLTw" id="2i6cuYQuBez" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQuxxC" resolve="n" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQuBe_" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQuBeA" role="3cpWs9">
<property role="TrG5h" value="beq8r" />
<node concept="10P_77" id="2i6cuYQuBeB" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQuBeC" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQuBuh" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQuAwa" resolve="ff" />
</node>
<node concept="37vLTw" id="2i6cuYQuBeE" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQuxxC" resolve="n" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2i6cuYQykAT" role="3cqZAp" />
<node concept="3clFbH" id="2i6cuYQyng3" role="3cqZAp" />
<node concept="3cpWs8" id="2i6cuYQykDO" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQykDP" role="3cpWs9">
<property role="TrG5h" value="beq9" />
<node concept="10P_77" id="2i6cuYQykDQ" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQykDR" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQykDS" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQulNt" resolve="f" />
</node>
<node concept="10Nm6u" id="2i6cuYQykUL" role="3uHU7B" />
<node concept="1U20sH" id="2i6cuYQykDU" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQykDV" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQykDW" role="3cpWs9">
<property role="TrG5h" value="beq9r" />
<node concept="10P_77" id="2i6cuYQykDX" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQykDY" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQykDZ" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQulNt" resolve="f" />
</node>
<node concept="10Nm6u" id="2i6cuYQyl5L" role="3uHU7w" />
<node concept="1U20sH" id="2i6cuYQykE1" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQykE2" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQykE3" role="3cpWs9">
<property role="TrG5h" value="beq10" />
<node concept="10P_77" id="2i6cuYQykE4" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQykE5" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQykE6" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQuAwa" resolve="ff" />
</node>
<node concept="10Nm6u" id="2i6cuYQylqo" role="3uHU7B" />
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQykE8" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQykE9" role="3cpWs9">
<property role="TrG5h" value="beq10r" />
<node concept="10P_77" id="2i6cuYQykEa" role="1tU5fm" />
<node concept="3clFbC" id="2i6cuYQykEb" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQykEc" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQuAwa" resolve="ff" />
</node>
<node concept="10Nm6u" id="2i6cuYQylvF" role="3uHU7w" />
</node>
</node>
</node>
</node>
<node concept="3Tm1VV" id="2i6cuYQulnr" role="1B3o_S" />
<node concept="3cqZAl" id="2i6cuYQulnE" role="3clF45" />
<node concept="37vLTG" id="2i6cuYQuvai" role="3clF46">
<property role="TrG5h" value="a" />
<node concept="3uibUv" id="2i6cuYQuveR" role="1tU5fm">
<ref role="3uigEE" node="2i6cuYQut3Q" resolve="Operators.A" />
</node>
</node>
<node concept="37vLTG" id="2i6cuYQuvkj" role="3clF46">
<property role="TrG5h" value="b" />
<node concept="3uibUv" id="2i6cuYQuvl7" role="1tU5fm">
<ref role="3uigEE" node="2i6cuYQusU2" resolve="Operators.B" />
</node>
</node>
<node concept="37vLTG" id="2i6cuYQuvpO" role="3clF46">
<property role="TrG5h" value="c" />
<node concept="3uibUv" id="2i6cuYQuvqG" role="1tU5fm">
<ref role="3uigEE" node="2i6cuYQutu3" resolve="Operators.C" />
</node>
</node>
<node concept="37vLTG" id="2i6cuYQuxxC" role="3clF46">
<property role="TrG5h" value="n" />
<node concept="3uibUv" id="2i6cuYQuxAN" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~Number" resolve="Number" />
</node>
</node>
<node concept="37vLTG" id="2i6cuYQulJi" role="3clF46">
<property role="TrG5h" value="s" />
<node concept="3uibUv" id="2i6cuYQulJh" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~String" resolve="String" />
</node>
</node>
<node concept="37vLTG" id="2i6cuYQulNt" role="3clF46">
<property role="TrG5h" value="f" />
<node concept="10OMs4" id="2i6cuYQulRG" role="1tU5fm" />
</node>
<node concept="37vLTG" id="2i6cuYQulS2" role="3clF46">
<property role="TrG5h" value="d" />
<node concept="10P55v" id="2i6cuYQulW9" role="1tU5fm" />
</node>
<node concept="37vLTG" id="2i6cuYQum0z" role="3clF46">
<property role="TrG5h" value="i" />
<node concept="10Oyi0" id="2i6cuYQum4w" role="1tU5fm" />
</node>
<node concept="37vLTG" id="2i6cuYQuAwa" role="3clF46">
<property role="TrG5h" value="ff" />
<node concept="3uibUv" id="2i6cuYQuA_r" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~Float" resolve="Float" />
</node>
</node>
</node>
<node concept="2tJIrI" id="2i6cuYQuEs7" role="jymVt" />
<node concept="3clFb_" id="2i6cuYQXpxi" role="jymVt">
<property role="TrG5h" value="inequalities" />
<node concept="3clFbS" id="2i6cuYQXpxj" role="3clF47">
<node concept="3cpWs8" id="2i6cuYQXpxk" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpxl" role="3cpWs9">
<property role="TrG5h" value="beq1" />
<node concept="10P_77" id="2i6cuYQXpxm" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXpWm" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQXpxp" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzn" resolve="f" />
</node>
<node concept="37vLTw" id="2i6cuYQXpxo" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzp" resolve="d" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpxq" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpxr" role="3cpWs9">
<property role="TrG5h" value="beq2" />
<node concept="10P_77" id="2i6cuYQXpxs" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXpXT" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQXpxv" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzr" resolve="i" />
</node>
<node concept="37vLTw" id="2i6cuYQXpxu" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzp" resolve="d" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpxw" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpxx" role="3cpWs9">
<property role="TrG5h" value="beq3" />
<node concept="10P_77" id="2i6cuYQXpxy" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXpZs" role="33vP2m">
<node concept="1U20sH" id="2i6cuYQXpZv" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
<node concept="37vLTw" id="2i6cuYQXpx$" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzn" resolve="f" />
</node>
<node concept="37vLTw" id="2i6cuYQXpxA" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzl" resolve="s" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpxB" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpxC" role="3cpWs9">
<property role="TrG5h" value="beq4" />
<node concept="10P_77" id="2i6cuYQXpxD" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXq11" role="33vP2m">
<node concept="1U20sH" id="2i6cuYQXq13" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
<node concept="37vLTw" id="2i6cuYQXpxG" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzl" resolve="s" />
</node>
<node concept="37vLTw" id="2i6cuYQXpxH" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzr" resolve="i" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2i6cuYQXpxI" role="3cqZAp" />
<node concept="3cpWs8" id="2i6cuYQXpxJ" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpxK" role="3cpWs9">
<property role="TrG5h" value="beq5" />
<node concept="10P_77" id="2i6cuYQXpxL" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXqaE" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQXpxN" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzd" resolve="a" />
</node>
<node concept="37vLTw" id="2i6cuYQXpxO" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzh" resolve="c" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpxP" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpxQ" role="3cpWs9">
<property role="TrG5h" value="beq5r" />
<node concept="10P_77" id="2i6cuYQXpxR" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXqcd" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQXpxT" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzh" resolve="c" />
</node>
<node concept="37vLTw" id="2i6cuYQXpxU" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzd" resolve="a" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpxV" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpxW" role="3cpWs9">
<property role="TrG5h" value="beq6" />
<node concept="10P_77" id="2i6cuYQXpxX" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXqdK" role="33vP2m">
<node concept="1U20sH" id="2i6cuYQXqdO" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
<node concept="37vLTw" id="2i6cuYQXpxZ" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzd" resolve="a" />
</node>
<node concept="37vLTw" id="2i6cuYQXpy0" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzj" resolve="n" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpy2" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpy3" role="3cpWs9">
<property role="TrG5h" value="beq6r" />
<node concept="10P_77" id="2i6cuYQXpy4" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXqfl" role="33vP2m">
<node concept="1U20sH" id="2i6cuYQXqfp" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
<node concept="37vLTw" id="2i6cuYQXpy7" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzj" resolve="n" />
</node>
<node concept="37vLTw" id="2i6cuYQXpy6" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzd" resolve="a" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2i6cuYQXpy9" role="3cqZAp" />
<node concept="3SKdUt" id="2i6cuYQXpya" role="3cqZAp">
<node concept="1PaTwC" id="2i6cuYQXpyb" role="3ndbpf">
<node concept="3oM_SD" id="2i6cuYQXpyc" role="1PaTwD">
<property role="3oM_SC" value="note" />
</node>
<node concept="3oM_SD" id="2i6cuYQXpyd" role="1PaTwD">
<property role="3oM_SC" value="this" />
</node>
<node concept="3oM_SD" id="2i6cuYQXpye" role="1PaTwD">
<property role="3oM_SC" value="case," />
</node>
<node concept="3oM_SD" id="2i6cuYQXpyf" role="1PaTwD">
<property role="3oM_SC" value="boxing" />
</node>
<node concept="3oM_SD" id="2i6cuYQXpyg" role="1PaTwD">
<property role="3oM_SC" value="shouldn't" />
</node>
<node concept="3oM_SD" id="2i6cuYQXpyh" role="1PaTwD">
<property role="3oM_SC" value="be" />
</node>
<node concept="3oM_SD" id="2i6cuYQXpyi" role="1PaTwD">
<property role="3oM_SC" value="implicitly" />
</node>
<node concept="3oM_SD" id="2i6cuYQXpyj" role="1PaTwD">
<property role="3oM_SC" value="applied" />
</node>
<node concept="3oM_SD" id="2i6cuYQXpyk" role="1PaTwD">
<property role="3oM_SC" value="here" />
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpyl" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpym" role="3cpWs9">
<property role="TrG5h" value="beq7" />
<node concept="10P_77" id="2i6cuYQXpyn" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXqgU" role="33vP2m">
<node concept="1U20sH" id="2i6cuYQXqgY" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
<node concept="37vLTw" id="2i6cuYQXpyq" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzj" resolve="n" />
</node>
<node concept="37vLTw" id="2i6cuYQXpyp" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzn" resolve="f" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpys" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpyt" role="3cpWs9">
<property role="TrG5h" value="beq7r" />
<node concept="10P_77" id="2i6cuYQXpyu" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXqli" role="33vP2m">
<node concept="1U20sH" id="2i6cuYQXqlm" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
<node concept="37vLTw" id="2i6cuYQXpyw" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzn" resolve="f" />
</node>
<node concept="37vLTw" id="2i6cuYQXpyx" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzj" resolve="n" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpyz" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpy$" role="3cpWs9">
<property role="TrG5h" value="beq8" />
<node concept="10P_77" id="2i6cuYQXpy_" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXqmR" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQXpyC" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzj" resolve="n" />
</node>
<node concept="37vLTw" id="2i6cuYQXpyB" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzt" resolve="ff" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpyD" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpyE" role="3cpWs9">
<property role="TrG5h" value="beq8r" />
<node concept="10P_77" id="2i6cuYQXpyF" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXqoq" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQXpyH" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzt" resolve="ff" />
</node>
<node concept="37vLTw" id="2i6cuYQXpyI" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzj" resolve="n" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2i6cuYQXpyJ" role="3cqZAp" />
<node concept="3clFbH" id="2i6cuYQXpyK" role="3cqZAp" />
<node concept="3cpWs8" id="2i6cuYQXpyL" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpyM" role="3cpWs9">
<property role="TrG5h" value="beq9" />
<node concept="10P_77" id="2i6cuYQXpyN" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXqpX" role="33vP2m">
<node concept="1U20sH" id="2i6cuYQXqq1" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
<node concept="10Nm6u" id="2i6cuYQXpyQ" role="3uHU7B" />
<node concept="37vLTw" id="2i6cuYQXpyP" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzn" resolve="f" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpyS" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpyT" role="3cpWs9">
<property role="TrG5h" value="beq9r" />
<node concept="10P_77" id="2i6cuYQXpyU" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXqxg" role="33vP2m">
<node concept="1U20sH" id="2i6cuYQXqxk" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
<node concept="37vLTw" id="2i6cuYQXpyW" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzn" resolve="f" />
</node>
<node concept="10Nm6u" id="2i6cuYQXpyX" role="3uHU7w" />
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpyZ" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpz0" role="3cpWs9">
<property role="TrG5h" value="beq10" />
<node concept="10P_77" id="2i6cuYQXpz1" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXqyQ" role="33vP2m">
<node concept="10Nm6u" id="2i6cuYQXpz4" role="3uHU7B" />
<node concept="37vLTw" id="2i6cuYQXpz3" role="3uHU7w">
<ref role="3cqZAo" node="2i6cuYQXpzt" resolve="ff" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2i6cuYQXpz5" role="3cqZAp">
<node concept="3cpWsn" id="2i6cuYQXpz6" role="3cpWs9">
<property role="TrG5h" value="beq10r" />
<node concept="10P_77" id="2i6cuYQXpz7" role="1tU5fm" />
<node concept="3y3z36" id="2i6cuYQXq$q" role="33vP2m">
<node concept="37vLTw" id="2i6cuYQXpz9" role="3uHU7B">
<ref role="3cqZAo" node="2i6cuYQXpzt" resolve="ff" />
</node>
<node concept="10Nm6u" id="2i6cuYQXpza" role="3uHU7w" />
</node>
</node>
</node>
</node>
<node concept="3Tm1VV" id="2i6cuYQXpzb" role="1B3o_S" />
<node concept="3cqZAl" id="2i6cuYQXpzc" role="3clF45" />
<node concept="37vLTG" id="2i6cuYQXpzd" role="3clF46">
<property role="TrG5h" value="a" />
<node concept="3uibUv" id="2i6cuYQXpze" role="1tU5fm">
<ref role="3uigEE" node="2i6cuYQut3Q" resolve="Operators.A" />
</node>
</node>
<node concept="37vLTG" id="2i6cuYQXpzf" role="3clF46">
<property role="TrG5h" value="b" />
<node concept="3uibUv" id="2i6cuYQXpzg" role="1tU5fm">
<ref role="3uigEE" node="2i6cuYQusU2" resolve="Operators.B" />
</node>
</node>
<node concept="37vLTG" id="2i6cuYQXpzh" role="3clF46">
<property role="TrG5h" value="c" />
<node concept="3uibUv" id="2i6cuYQXpzi" role="1tU5fm">
<ref role="3uigEE" node="2i6cuYQutu3" resolve="Operators.C" />
</node>
</node>
<node concept="37vLTG" id="2i6cuYQXpzj" role="3clF46">
<property role="TrG5h" value="n" />
<node concept="3uibUv" id="2i6cuYQXpzk" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~Number" resolve="Number" />
</node>
</node>
<node concept="37vLTG" id="2i6cuYQXpzl" role="3clF46">
<property role="TrG5h" value="s" />
<node concept="3uibUv" id="2i6cuYQXpzm" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~String" resolve="String" />
</node>
</node>
<node concept="37vLTG" id="2i6cuYQXpzn" role="3clF46">
<property role="TrG5h" value="f" />
<node concept="10OMs4" id="2i6cuYQXpzo" role="1tU5fm" />
</node>
<node concept="37vLTG" id="2i6cuYQXpzp" role="3clF46">
<property role="TrG5h" value="d" />
<node concept="10P55v" id="2i6cuYQXpzq" role="1tU5fm" />
</node>
<node concept="37vLTG" id="2i6cuYQXpzr" role="3clF46">
<property role="TrG5h" value="i" />
<node concept="10Oyi0" id="2i6cuYQXpzs" role="1tU5fm" />
</node>
<node concept="37vLTG" id="2i6cuYQXpzt" role="3clF46">
<property role="TrG5h" value="ff" />
<node concept="3uibUv" id="2i6cuYQXpzu" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~Float" resolve="Float" />
</node>
</node>
</node>
<node concept="3Tm1VV" id="2i6cuYQukZY" role="1B3o_S" />
</node>
</model>

View File

@ -443,6 +443,35 @@
</node>
</node>
</node>
<node concept="1LZb2c" id="2i6cuYQuHi8" role="1SL9yI">
<property role="TrG5h" value="operators" />
<node concept="3cqZAl" id="2i6cuYQuHi9" role="3clF45" />
<node concept="3clFbS" id="2i6cuYQuHia" role="3clF47">
<node concept="2Hmddi" id="2i6cuYQuHib" role="3cqZAp">
<node concept="2OqwBi" id="2i6cuYQuHic" role="2Hmdds">
<node concept="2YIFZM" id="2i6cuYQuHid" role="2Oq$k0">
<ref role="1Pybhc" to="tj24:1N_0WA5JxZO" resolve="TypecheckingTestHelper" />
<ref role="37wK5l" to="tj24:27bTNFfaOo$" resolve="ofNode" />
<node concept="2OqwBi" id="2i6cuYQuHie" role="37wK5m">
<node concept="2WthIp" id="2i6cuYQuHif" role="2Oq$k0" />
<node concept="2XshWL" id="2i6cuYQuHig" role="2OqNvi">
<ref role="2WH_rO" node="35YJGAJTxCf" resolve="resolve" />
<node concept="2tJFMh" id="2i6cuYQuHih" role="2XxRq1">
<node concept="ZC_QK" id="2i6cuYQuHYu" role="2tJFKM">
<ref role="2aWVGs" to="yg5v:2i6cuYQukZX" resolve="Operators" />
</node>
</node>
</node>
</node>
<node concept="1jxXqW" id="2i6cuYQuHij" role="37wK5m" />
</node>
<node concept="liA8E" id="2i6cuYQuHik" role="2OqNvi">
<ref role="37wK5l" to="tj24:27bTNFfaYS2" resolve="checkTypes" />
</node>
</node>
</node>
</node>
</node>
<node concept="1LZb2c" id="7AyqXCdNg6Z" role="1SL9yI">
<property role="TrG5h" value="primitiveTypes" />
<node concept="3cqZAl" id="7AyqXCdNg70" role="3clF45" />