Support for processing input nodes recursively or not. Optimizing local typechecking.

The flag "recursive" is passed down to ProgramFactory to control whether
the input nodes are to be walked recursively.
This flag is set to false when calculating a node's type in isolation.
This commit is contained in:
Fedor Isakov 2020-07-21 16:57:27 +02:00
parent 90e90540dc
commit 96918d0e1d
8 changed files with 717 additions and 417 deletions

View File

@ -4139,6 +4139,10 @@
<node concept="3Tqbb2" id="7kTeLbPolyb" role="A3Ik2" />
</node>
</node>
<node concept="37vLTG" id="61G6TdDXEdy" role="3clF46">
<property role="TrG5h" value="recursively" />
<node concept="10P_77" id="61G6TdDXIQo" role="1tU5fm" />
</node>
<node concept="37vLTG" id="5EDW3XEu33d" role="3clF46">
<property role="TrG5h" value="query" />
<node concept="3uibUv" id="5EDW3XEu3xO" role="1tU5fm">
@ -4245,6 +4249,9 @@
<node concept="37vLTw" id="6OXbTDxOoZh" role="37wK5m">
<ref role="3cqZAo" node="7kTeLbPojCA" resolve="nodes" />
</node>
<node concept="37vLTw" id="61G6TdDXKQE" role="37wK5m">
<ref role="3cqZAo" node="61G6TdDXEdy" resolve="recursively" />
</node>
</node>
</node>
</node>

View File

@ -1571,6 +1571,9 @@
</node>
</node>
</node>
<node concept="3clFbT" id="61G6TdDXSDw" role="37wK5m">
<property role="3clFbU" value="true" />
</node>
<node concept="2YIFZM" id="5EDW3XEzxoX" role="37wK5m">
<ref role="37wK5l" to="tj24:5EDW3XDYggE" resolve="check" />
<ref role="1Pybhc" to="tj24:5EDW3XDYg8Y" resolve="TypecheckingQueries" />

View File

@ -1348,6 +1348,9 @@
</node>
</node>
</node>
<node concept="3clFbT" id="61G6TdDXWzJ" role="37wK5m">
<property role="3clFbU" value="true" />
</node>
<node concept="2YIFZM" id="5EDW3XEzAnI" role="37wK5m">
<ref role="37wK5l" to="tj24:5EDW3XDYggE" resolve="check" />
<ref role="1Pybhc" to="tj24:5EDW3XDYg8Y" resolve="TypecheckingQueries" />

View File

@ -3279,6 +3279,9 @@
<ref role="2Oxat5" node="6hqFpWnfpcc" resolve="nodes" />
</node>
</node>
<node concept="3clFbT" id="61G6TdE2zqb" role="37wK5m">
<property role="3clFbU" value="true" />
</node>
<node concept="37vLTw" id="7WKNeR8ThOi" role="37wK5m">
<ref role="3cqZAo" node="7WKNeR8SQxI" resolve="repository" />
</node>

View File

@ -6905,6 +6905,9 @@
<node concept="37vLTw" id="44XN1Jdbc1n" role="37wK5m">
<ref role="3cqZAo" node="44XN1Jdbc0W" resolve="containingRoot" />
</node>
<node concept="3clFbT" id="61G6TdE3Veb" role="37wK5m">
<property role="3clFbU" value="true" />
</node>
<node concept="37vLTw" id="61G6TdCuZ41" role="37wK5m">
<ref role="3cqZAo" node="61G6TdCuWyk" resolve="tracking" />
</node>
@ -7103,6 +7106,9 @@
<node concept="37vLTw" id="44XN1Jd9Z$G" role="37wK5m">
<ref role="3cqZAo" node="3IIf9O_tnmu" resolve="containingRoot" />
</node>
<node concept="3clFbT" id="61G6TdE3VxZ" role="37wK5m">
<property role="3clFbU" value="true" />
</node>
<node concept="37vLTw" id="61G6TdCuOZy" role="37wK5m">
<ref role="3cqZAo" node="5Qx6_65ofYB" resolve="tracking" />
</node>
@ -7620,6 +7626,7 @@
<node concept="37vLTw" id="61G6TdDjQLd" role="37wK5m">
<ref role="3cqZAo" node="1FOQehxnAn0" resolve="node" />
</node>
<node concept="3clFbT" id="61G6TdE3VNK" role="37wK5m" />
<node concept="37vLTw" id="61G6TdDj39r" role="37wK5m">
<ref role="3cqZAo" node="61G6TdDiRE1" resolve="tracking" />
</node>
@ -7978,6 +7985,10 @@
<property role="TrG5h" value="unitOrNode" />
<node concept="3Tqbb2" id="3KN3A4vE1RG" role="1tU5fm" />
</node>
<node concept="37vLTG" id="61G6TdE3MVO" role="3clF46">
<property role="TrG5h" value="recursive" />
<node concept="10P_77" id="61G6TdE3NlX" role="1tU5fm" />
</node>
<node concept="37vLTG" id="61G6TdCu8zW" role="3clF46">
<property role="TrG5h" value="tracking" />
<node concept="10P_77" id="61G6TdCubjX" role="1tU5fm" />
@ -8216,6 +8227,9 @@
<node concept="37vLTw" id="3KN3A4vGkWL" role="37wK5m">
<ref role="3cqZAo" node="7eK3DxvmvIz" resolve="unitOrNode" />
</node>
<node concept="37vLTw" id="61G6TdE60Az" role="37wK5m">
<ref role="3cqZAo" node="61G6TdE3MVO" resolve="recursive" />
</node>
<node concept="37vLTw" id="7i3KM7gQiAQ" role="37wK5m">
<ref role="3cqZAo" node="7i3KM7gPNcC" resolve="strategy" />
</node>
@ -8324,6 +8338,10 @@
<property role="TrG5h" value="unit" />
<node concept="3Tqbb2" id="3KN3A4vF5Uh" role="1tU5fm" />
</node>
<node concept="37vLTG" id="61G6TdE5Nhb" role="3clF46">
<property role="TrG5h" value="recursive" />
<node concept="10P_77" id="61G6TdE5TVP" role="1tU5fm" />
</node>
<node concept="37vLTG" id="7i3KM7gLjWw" role="3clF46">
<property role="TrG5h" value="stepsFactory" />
<node concept="3uibUv" id="7i3KM7gLn2i" role="1tU5fm">
@ -8380,6 +8398,9 @@
</node>
</node>
</node>
<node concept="37vLTw" id="61G6TdE618V" role="37wK5m">
<ref role="3cqZAo" node="61G6TdE5Nhb" resolve="recursive" />
</node>
<node concept="37vLTw" id="7i3KM7guUHL" role="37wK5m">
<ref role="3cqZAo" node="3KN3A4vFhfe" resolve="acs" />
</node>
@ -8481,6 +8502,9 @@
<node concept="37vLTw" id="156bt08TbiR" role="37wK5m">
<ref role="3cqZAo" node="156bt08QxlR" resolve="nodes" />
</node>
<node concept="3clFbT" id="61G6TdE5n2F" role="37wK5m">
<property role="3clFbU" value="true" />
</node>
<node concept="37vLTw" id="156bt08TbiS" role="37wK5m">
<ref role="3cqZAo" node="156bt08TbiF" resolve="acs" />
</node>
@ -8552,6 +8576,9 @@
<node concept="37vLTw" id="7i3KM7gnWnh" role="37wK5m">
<ref role="3cqZAo" node="3KN3A4vEXnm" resolve="nodes" />
</node>
<node concept="3clFbT" id="61G6TdE5rZo" role="37wK5m">
<property role="3clFbU" value="true" />
</node>
<node concept="37vLTw" id="7i3KM7gvtwb" role="37wK5m">
<ref role="3cqZAo" node="7i3KM7gvgrZ" resolve="acs" />
</node>
@ -8581,6 +8608,10 @@
<property role="TrG5h" value="nodes" />
<node concept="2I9FWS" id="7i3KM7glTMe" role="1tU5fm" />
</node>
<node concept="37vLTG" id="61G6TdE4SuO" role="3clF46">
<property role="TrG5h" value="recursive" />
<node concept="10P_77" id="61G6TdE4ZIv" role="1tU5fm" />
</node>
<node concept="37vLTG" id="7i3KM7gt3Z2" role="3clF46">
<property role="TrG5h" value="acs" />
<node concept="A3Dl8" id="7i3KM7gtgpq" role="1tU5fm">
@ -8691,6 +8722,9 @@
<node concept="37vLTw" id="7i3KM7gJXuS" role="37wK5m">
<ref role="3cqZAo" node="7i3KM7glTMd" resolve="nodes" />
</node>
<node concept="37vLTw" id="61G6TdE5L6Y" role="37wK5m">
<ref role="3cqZAo" node="61G6TdE4SuO" resolve="recursive" />
</node>
<node concept="37vLTw" id="5EDW3XErVj7" role="37wK5m">
<ref role="3cqZAo" node="5EDW3XEr1e5" resolve="query" />
</node>
@ -14846,6 +14880,9 @@
<node concept="37vLTw" id="6nFpYlurvaW" role="37wK5m">
<ref role="3cqZAo" node="7WKNeR9fh8z" resolve="inputNodes" />
</node>
<node concept="3clFbT" id="61G6TdE2xuv" role="37wK5m">
<property role="3clFbU" value="true" />
</node>
<node concept="37vLTw" id="6nFpYlurvhr" role="37wK5m">
<ref role="3cqZAo" node="7WKNeR9fh8_" resolve="repository" />
</node>
@ -16996,6 +17033,10 @@
<property role="TrG5h" value="nodes" />
<node concept="2I9FWS" id="7i3KM7gJ0u4" role="1tU5fm" />
</node>
<node concept="37vLTG" id="61G6TdE5zcX" role="3clF46">
<property role="TrG5h" value="recursive" />
<node concept="10P_77" id="61G6TdE5DTK" role="1tU5fm" />
</node>
<node concept="37vLTG" id="5EDW3XErpy6" role="3clF46">
<property role="TrG5h" value="query" />
<node concept="3uibUv" id="5EDW3XErpy7" role="1tU5fm">
@ -17070,6 +17111,9 @@
<node concept="37vLTw" id="6nFpYlushsp" role="37wK5m">
<ref role="3cqZAo" node="7i3KM7gIXYC" resolve="nodes" />
</node>
<node concept="37vLTw" id="61G6TdEblCH" role="37wK5m">
<ref role="3cqZAo" node="61G6TdE5zcX" resolve="recursive" />
</node>
<node concept="2OqwBi" id="61G6TdCopl$" role="37wK5m">
<node concept="37vLTw" id="61G6TdCl6qv" role="2Oq$k0">
<ref role="3cqZAo" node="61G6TdCj0F7" resolve="typecheckingService" />
@ -17806,6 +17850,10 @@
<property role="TrG5h" value="nodes" />
<node concept="2I9FWS" id="6nFpYlusyqi" role="1tU5fm" />
</node>
<node concept="37vLTG" id="61G6TdE5Fh6" role="3clF46">
<property role="TrG5h" value="recursive" />
<node concept="10P_77" id="61G6TdE5JYj" role="1tU5fm" />
</node>
<node concept="37vLTG" id="5EDW3XEtHL1" role="3clF46">
<property role="TrG5h" value="query" />
<node concept="3uibUv" id="5EDW3XEtLaI" role="1tU5fm">

View File

@ -715,6 +715,19 @@
</node>
</node>
</node>
<node concept="3clFbF" id="61G6TdE2my5" role="3cqZAp">
<node concept="37vLTI" id="61G6TdE2my7" role="3clFbG">
<node concept="2OqwBi" id="61G6TdE2pC2" role="37vLTJ">
<node concept="Xjq3P" id="61G6TdE2pH9" role="2Oq$k0" />
<node concept="2OwXpG" id="61G6TdE2pC5" role="2OqNvi">
<ref role="2Oxat5" node="61G6TdE2my1" resolve="recursive" />
</node>
</node>
<node concept="37vLTw" id="61G6TdE2myb" role="37vLTx">
<ref role="3cqZAo" node="61G6TdE2izs" resolve="recursive" />
</node>
</node>
</node>
<node concept="3clFbF" id="5EDW3XEoy5t" role="3cqZAp">
<node concept="37vLTI" id="5EDW3XEoy5u" role="3clFbG">
<node concept="2OqwBi" id="5EDW3XEoy5v" role="37vLTJ">
@ -771,6 +784,10 @@
<property role="TrG5h" value="inputNodes" />
<node concept="2I9FWS" id="5EDW3XEoy5S" role="1tU5fm" />
</node>
<node concept="37vLTG" id="61G6TdE2izs" role="3clF46">
<property role="TrG5h" value="recursive" />
<node concept="10P_77" id="61G6TdE2lVn" role="1tU5fm" />
</node>
<node concept="37vLTG" id="5EDW3XEoy5T" role="3clF46">
<property role="TrG5h" value="repository" />
<node concept="3uibUv" id="5EDW3XEoy5U" role="1tU5fm">
@ -1070,6 +1087,9 @@
<node concept="37vLTw" id="7kTeLbPtKEF" role="37wK5m">
<ref role="3cqZAo" node="7kTeLbPt5$3" resolve="nodes" />
</node>
<node concept="37vLTw" id="61G6TdE8ZuE" role="37wK5m">
<ref role="3cqZAo" node="61G6TdE2my1" resolve="recursive" />
</node>
<node concept="37vLTw" id="5EDW3XEu5SF" role="37wK5m">
<ref role="3cqZAo" node="5EDW3XEoAmV" resolve="query" />
</node>
@ -1323,6 +1343,12 @@
<node concept="3Tmbuc" id="6nFpYlurxZ8" role="1B3o_S" />
<node concept="2I9FWS" id="7kTeLbPt5$6" role="1tU5fm" />
</node>
<node concept="312cEg" id="61G6TdE2my1" role="jymVt">
<property role="TrG5h" value="recursive" />
<node concept="3Tm6S6" id="61G6TdE2my2" role="1B3o_S" />
<node concept="10P_77" id="61G6TdE2my4" role="1tU5fm" />
<node concept="3clFbT" id="61G6TdE8Z5S" role="33vP2m" />
</node>
<node concept="312cEg" id="6kREIVkLEGt" role="jymVt">
<property role="TrG5h" value="repository" />
<node concept="3Tmbuc" id="6nFpYlurwNH" role="1B3o_S" />

View File

@ -1089,6 +1089,9 @@
<ref role="2Oxat5" node="6hqFpWnfpcc" resolve="nodes" />
</node>
</node>
<node concept="3clFbT" id="61G6TdE2zIC" role="37wK5m">
<property role="3clFbU" value="true" />
</node>
<node concept="37vLTw" id="7WKNeR8ThOi" role="37wK5m">
<ref role="3cqZAo" node="7WKNeR8SQxI" resolve="repository" />
</node>