Handle cases with free & inference variables in containment, remove few unneeded rules (MPSCR-11)

Remove rules which handle capture+inference var case separately: it's already handled.
Remove rule with error on bound which shouldn't be triggered with new hasBound semantics.
Add symmetric rule for case value+inference var: types can be inferred nevermind relation direction.
Add rules for free vars without bounds (these ain't inference vars). Need in such vars arise when
e.g. params in classifierType terms must be somehow accessed. It's used in MethodCall rules.
This commit is contained in:
Grigorii Kirgizov 2019-12-24 18:47:50 +03:00
parent 8744263cb4
commit a2f8f5e6f3
2 changed files with 566 additions and 869 deletions

View File

@ -1695,7 +1695,6 @@
</node>
</node>
<node concept="2tJIrI" id="2PEDwPSdgqw" role="jymVt" />
<node concept="2tJIrI" id="2PEDwPSdka7" role="jymVt" />
<node concept="2tJIrI" id="2PEDwPSdbcl" role="jymVt" />
<node concept="312cEu" id="2PEDwPSdka8" role="jymVt">
<property role="TrG5h" value="Demo" />
@ -2255,6 +2254,15 @@
</node>
</node>
</node>
<node concept="37vLTG" id="2Cji6ER9GNr" role="3clF46">
<property role="TrG5h" value="eTSer" />
<node concept="3uibUv" id="2Cji6ER9H2K" role="1tU5fm">
<ref role="3uigEE" node="2PEDwPSdka2" resolve="Containment.E" />
<node concept="16syzq" id="2Cji6ER9Hcw" role="11_B2D">
<ref role="16sUi3" node="2Cji6ER9FVq" resolve="TSer" />
</node>
</node>
</node>
<node concept="3clFbS" id="2Cji6ER7duE" role="3clF47">
<node concept="3SKdUt" id="2Cji6ER7duF" role="3cqZAp">
<node concept="1PaTwC" id="2Cji6ER7duG" role="3ndbpf">
@ -2329,9 +2337,106 @@
</node>
</node>
</node>
<node concept="3clFbF" id="2Cji6ER9IZ8" role="3cqZAp">
<node concept="37vLTI" id="2Cji6ER9Jia" role="3clFbG">
<node concept="37vLTw" id="2Cji6ER9JuE" role="37vLTx">
<ref role="3cqZAo" node="2Cji6ER9GNr" resolve="eTSer" />
</node>
<node concept="37vLTw" id="2Cji6ER9IZ6" role="37vLTJ">
<ref role="3cqZAo" node="2Cji6ER7duv" resolve="eeSer" />
</node>
</node>
</node>
<node concept="3clFbF" id="2Cji6ER9S$l" role="3cqZAp">
<node concept="37vLTI" id="2Cji6ER9SOP" role="3clFbG">
<node concept="37vLTw" id="2Cji6ER9SXd" role="37vLTx">
<ref role="3cqZAo" node="2Cji6ER7duv" resolve="eeSer" />
</node>
<node concept="37vLTw" id="2Cji6ER9S$j" role="37vLTJ">
<ref role="3cqZAo" node="2Cji6ER9GNr" resolve="eTSer" />
</node>
<node concept="1U20sH" id="2Cji6ER9T9D" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
<node concept="3clFbH" id="2Cji6ER9IR6" role="3cqZAp" />
<node concept="3clFbF" id="2Cji6ER9DgY" role="3cqZAp">
<node concept="2OqwBi" id="2Cji6ER9Dog" role="3clFbG">
<node concept="37vLTw" id="2Cji6ER9DgW" role="2Oq$k0">
<ref role="3cqZAo" node="2Cji6ER7duv" resolve="eeSer" />
</node>
<node concept="liA8E" id="2Cji6ER9D$I" role="2OqNvi">
<ref role="37wK5l" node="2PEDwPSdk9O" resolve="add" />
<node concept="2OqwBi" id="2Cji6ER9DV3" role="37wK5m">
<node concept="37vLTw" id="2Cji6ER9DJD" role="2Oq$k0">
<ref role="3cqZAo" node="2Cji6ER7dus" resolve="eStr" />
</node>
<node concept="liA8E" id="2Cji6ER9E82" role="2OqNvi">
<ref role="37wK5l" node="4ObboSeq3Tj" resolve="get" />
</node>
<node concept="1U20sH" id="2Cji6ER9OKX" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="2Cji6ER9EB_" role="3cqZAp">
<node concept="2OqwBi" id="2Cji6ER9EKi" role="3clFbG">
<node concept="37vLTw" id="2Cji6ER9EBz" role="2Oq$k0">
<ref role="3cqZAo" node="2Cji6ER7duv" resolve="eeSer" />
</node>
<node concept="liA8E" id="2Cji6ER9ETz" role="2OqNvi">
<ref role="37wK5l" node="2PEDwPSdk9O" resolve="add" />
<node concept="2OqwBi" id="2Cji6ER9Igg" role="37wK5m">
<node concept="37vLTw" id="2Cji6ER9HU$" role="2Oq$k0">
<ref role="3cqZAo" node="2Cji6ER9GNr" resolve="eTSer" />
</node>
<node concept="liA8E" id="2Cji6ER9Ipv" role="2OqNvi">
<ref role="37wK5l" node="4ObboSeq3Tj" resolve="get" />
</node>
<node concept="1U20sH" id="2Cji6ER9P0j" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2Cji6ERioZs" role="3cqZAp" />
<node concept="3clFbF" id="2Cji6ERiqff" role="3cqZAp">
<node concept="1rXfSq" id="2Cji6ERiqfg" role="3clFbG">
<ref role="37wK5l" node="2Cji6ERinnP" resolve="callMe2" />
<node concept="37vLTw" id="2Cji6ERiqfh" role="37wK5m">
<ref role="3cqZAo" node="2Cji6ER7dus" resolve="eStr" />
</node>
</node>
</node>
<node concept="3clFbF" id="2Cji6ERipT3" role="3cqZAp">
<node concept="1rXfSq" id="2Cji6ERipT1" role="3clFbG">
<ref role="37wK5l" node="2Cji6ERinnP" resolve="callMe2" />
<node concept="37vLTw" id="2Cji6ERiqAp" role="37wK5m">
<ref role="3cqZAo" node="2Cji6ER7duy" resolve="eeStr" />
</node>
</node>
</node>
<node concept="3clFbF" id="2Cji6ERipff" role="3cqZAp">
<node concept="1rXfSq" id="2Cji6ERipfd" role="3clFbG">
<ref role="37wK5l" node="2Cji6ERinnP" resolve="callMe2" />
<node concept="37vLTw" id="2Cji6ERiptT" role="37wK5m">
<ref role="3cqZAo" node="2Cji6ER9GNr" resolve="eTSer" />
</node>
</node>
</node>
</node>
<node concept="3Tm1VV" id="2Cji6ER7dvr" role="1B3o_S" />
<node concept="3cqZAl" id="2Cji6ER7dvs" role="3clF45" />
<node concept="16euLQ" id="2Cji6ER9FVq" role="16eVyc">
<property role="TrG5h" value="TSer" />
<node concept="3uibUv" id="2Cji6ER9Gox" role="3ztrMU">
<ref role="3uigEE" to="guwi:~Serializable" resolve="Serializable" />
</node>
</node>
</node>
<node concept="2tJIrI" id="2Cji6ER51QH" role="jymVt" />
<node concept="3clFb_" id="2Cji6ER51uE" role="jymVt">
@ -2481,22 +2586,7 @@
</node>
</node>
</node>
<node concept="3SKdUt" id="2Cji6ER7dnR" role="3cqZAp">
<node concept="1PaTwC" id="2Cji6ER7dnS" role="3ndbpf">
<node concept="3oM_SD" id="2Cji6ER7dnU" role="1PaTwD">
<property role="3oM_SC" value="todo:" />
</node>
<node concept="3oM_SD" id="2Cji6ER7drN" role="1PaTwD">
<property role="3oM_SC" value="test" />
</node>
<node concept="3oM_SD" id="2Cji6ER7drQ" role="1PaTwD">
<property role="3oM_SC" value="super" />
</node>
<node concept="3oM_SD" id="2Cji6ER7dsy" role="1PaTwD">
<property role="3oM_SC" value="capture" />
</node>
</node>
</node>
<node concept="3clFbH" id="2Cji6ER9s$t" role="3cqZAp" />
<node concept="3clFbF" id="2Cji6ER51uZ" role="3cqZAp">
<node concept="2OqwBi" id="2Cji6ER51v0" role="3clFbG">
<node concept="37vLTw" id="2Cji6ER5pi0" role="2Oq$k0">
@ -2649,6 +2739,29 @@
</node>
</node>
<node concept="2tJIrI" id="4ObboSeqcmw" role="jymVt" />
<node concept="3clFb_" id="2Cji6ERinnP" role="jymVt">
<property role="TrG5h" value="callMe2" />
<node concept="3clFbS" id="2Cji6ERinnS" role="3clF47" />
<node concept="3Tm1VV" id="2Cji6ERimWP" role="1B3o_S" />
<node concept="3cqZAl" id="2Cji6ERinBA" role="3clF45" />
<node concept="16euLQ" id="2Cji6ERinRx" role="16eVyc">
<property role="TrG5h" value="S" />
<node concept="3uibUv" id="2Cji6ERiobv" role="3ztrMU">
<ref role="3uigEE" node="2PEDwPSdka2" resolve="Containment.E" />
<node concept="3qUE_q" id="2Cji6ERiodM" role="11_B2D">
<node concept="3uibUv" id="2Cji6ERiolB" role="3qUE_r">
<ref role="3uigEE" to="guwi:~Serializable" resolve="Serializable" />
</node>
</node>
</node>
</node>
<node concept="37vLTG" id="2Cji6ERiopL" role="3clF46">
<property role="TrG5h" value="s" />
<node concept="16syzq" id="2Cji6ERiopK" role="1tU5fm">
<ref role="16sUi3" node="2Cji6ERinRx" resolve="S" />
</node>
</node>
</node>
<node concept="2tJIrI" id="4ObboSeF_gC" role="jymVt" />
<node concept="3clFb_" id="4ObboSeETwX" role="jymVt">
<property role="TrG5h" value="partialInference" />