|
7 | 7 | Termination Analysis for justReturn
|
8 | 8 |
|
9 | 9 | Function Table
|
10 |
| - 1 alwaysLoop: alwaysLoop |
| 10 | + 1 alwaysLoop: _ |
11 | 11 |
|
12 | 12 | Termination Analysis for alwaysLoop
|
13 | 13 |
|
14 | 14 | Function Table
|
15 |
| - 1 alwaysProgress: +progress; alwaysProgress |
| 15 | + 1 alwaysProgress: _ |
16 | 16 |
|
17 | 17 | Termination Analysis for alwaysProgress
|
18 | 18 |
|
19 | 19 | Function Table
|
20 |
| - 1 alwaysProgressWrongOrder: alwaysProgressWrongOrder; +progress |
| 20 | + 1 alwaysProgressWrongOrder: _ |
21 | 21 |
|
22 | 22 | Termination Analysis for alwaysProgressWrongOrder
|
23 | 23 |
|
|
27 | 27 | Termination Analysis for doNotAlias
|
28 | 28 |
|
29 | 29 | Function Table
|
30 |
| - 1 progressOnBothBranches: [+progress || +progress2]; progressOnBothBranches |
| 30 | + 1 progressOnBothBranches: [_ || _]; _ |
31 | 31 |
|
32 | 32 | Termination Analysis for progressOnBothBranches
|
33 | 33 |
|
34 | 34 | Function Table
|
35 |
| - 1 progressOnOneBranch: [+progress || _]; progressOnOneBranch |
| 35 | + 1 progressOnOneBranch: [_ || _]; _ |
36 | 36 |
|
37 | 37 | Termination Analysis for progressOnOneBranch
|
38 | 38 |
|
39 | 39 | Function Table
|
40 |
| - 1 callParseFunction<parseFunction>: parseFunction |
41 |
| - 2 testParametricFunction: [+progress || _]; testParametricFunction2 |
42 |
| - 3 testParametricFunction2: callParseFunction<parseFunction:testParametricFunction> |
| 40 | + 1 callParseFunction: _ |
| 41 | + 2 testParametricFunction: [_ || _]; _ |
| 42 | + 3 testParametricFunction2: _ |
43 | 43 |
|
44 | 44 | Termination Analysis for testParametricFunction
|
45 | 45 |
|
46 | 46 | Function Table
|
47 | 47 | 1 doNothing: _
|
48 |
| - 2 testCacheHit: [doNothing; doNothing; +Progress.Nested.f || _]; testCacheHit |
| 48 | + 2 testCacheHit: [_ || _]; _ |
49 | 49 |
|
50 | 50 | Termination Analysis for testCacheHit
|
51 | 51 |
|
52 | 52 | Function Table
|
53 |
| - 1 evalOrderIsNotLeftToRight: {+progress, evalOrderIsNotLeftToRight}; _ |
| 53 | + 1 evalOrderIsNotLeftToRight: _ |
54 | 54 |
|
55 | 55 | Termination Analysis for evalOrderIsNotLeftToRight
|
56 | 56 |
|
57 | 57 | Function Table
|
58 |
| - 1 evalOrderIsNotRightToLeft: {evalOrderIsNotRightToLeft, +progress}; _ |
| 58 | + 1 evalOrderIsNotRightToLeft: _ |
59 | 59 |
|
60 | 60 | Termination Analysis for evalOrderIsNotRightToLeft
|
61 | 61 |
|
62 | 62 | Function Table
|
63 |
| - 1 butFirstArgumentIsAlwaysEvaluated: +progress; butFirstArgumentIsAlwaysEvaluated |
| 63 | + 1 butFirstArgumentIsAlwaysEvaluated: _ |
64 | 64 |
|
65 | 65 | Termination Analysis for butFirstArgumentIsAlwaysEvaluated
|
66 | 66 |
|
67 | 67 | Function Table
|
68 |
| - 1 butSecondArgumentIsAlwaysEvaluated: +progress; butSecondArgumentIsAlwaysEvaluated |
| 68 | + 1 butSecondArgumentIsAlwaysEvaluated: _ |
69 | 69 |
|
70 | 70 | Termination Analysis for butSecondArgumentIsAlwaysEvaluated
|
71 | 71 |
|
72 | 72 | Function Table
|
73 |
| - 1 parseExpression: [_ || _]; [+Parser.next; parseExpression; parseExpression; _ || parseInt] |
74 |
| - 2 parseInt: [_ || _]; +Parser.next; _ |
75 |
| - 3 parseList<f>: parseList$loop<f:f> |
76 |
| - 4 parseList$loop<f>: [_ || f; parseList$loop<f:f>; _] |
77 |
| - 5 parseListExpression: parseList<f:parseExpression> |
78 |
| - 6 parseListExpression2: parseExpression; parseList<f:parseExpression> |
79 |
| - 7 parseListInt: parseList<f:parseInt> |
80 |
| - 8 parseListIntTailRecursive: parseListIntTailRecursive$loop |
81 |
| - 9 parseListIntTailRecursive$loop: [_ || parseInt; parseListIntTailRecursive$loop] |
82 |
| - 10 parseListListInt: parseList<f:parseListInt> |
| 73 | + 1 parseExpression: [_ || _]; [_ || _] |
| 74 | + 2 parseListExpression: _ |
| 75 | + 3 parseListExpression2: _ |
| 76 | + 4 parseListInt: _ |
| 77 | + 5 parseListIntTailRecursive: _ |
| 78 | + 6 parseListIntTailRecursive$loop: [_ || _] |
| 79 | + 7 parseListListInt: _ |
83 | 80 |
|
84 | 81 | Termination Analysis for parseListInt
|
85 | 82 |
|
|
94 | 91 | Termination Analysis for parseListIntTailRecursive
|
95 | 92 |
|
96 | 93 | Function Table
|
97 |
| - 1 loopAfterProgress: loopAfterProgress |
98 |
| - 2 testLoopAfterProgress: +progress; loopAfterProgress |
| 94 | + 1 loopAfterProgress: _ |
| 95 | + 2 testLoopAfterProgress: _ |
99 | 96 |
|
100 | 97 | Termination Analysis for testLoopAfterProgress
|
101 | 98 |
|
102 | 99 | Function Table
|
103 |
| - 1 counterCompiled: +initState; [_ || counterCompiled; _]; _ |
104 |
| - 2 onClick1: [_ || counterCompiled] |
| 100 | + 1 counterCompiled: [_ || _]; _ |
| 101 | + 2 onClick1: [_ || _] |
105 | 102 |
|
106 | 103 | Termination Analysis for counterCompiled
|
107 | 104 |
|
108 | 105 | Function Table
|
109 |
| - 1 countRendersCompiled: [_ || countRendersCompiled; _]; _ |
| 106 | + 1 countRendersCompiled: [_ || _]; _ |
110 | 107 |
|
111 | 108 | Termination Analysis for countRendersCompiled
|
112 | 109 |
|
113 | 110 | Function Table
|
114 |
| - 1 alwaysReturnNone: [+Parser.next; alwaysReturnNone || None] |
115 |
| - 2 parseIntO: [+Parser.next; Some || None] |
116 |
| - 3 parseIntOWrapper: parseIntO |
117 |
| - 4 parseListIntO: parseListO<f:parseIntO> |
118 |
| - 5 parseListO<f>: parseListO$loop<f:f> |
119 |
| - 6 parseListO$loop<f>: [+Parser.next; _ || switch f {some: parseListO$loop<f:f>, none: _}] |
120 |
| - 7 testAlwaysReturnNone: alwaysReturnNone |
121 |
| - 8 thisMakesNoProgress: None; [_ || +Parser.next; Some] |
| 111 | + 1 alwaysReturnNone: [_ || None] |
| 112 | + 2 parseIntOWrapper: _ |
| 113 | + 3 parseListIntO: _ |
| 114 | + 4 testAlwaysReturnNone: _ |
| 115 | + 5 thisMakesNoProgress: None; [_ || Some] |
122 | 116 |
|
123 | 117 | Termination Analysis for parseListIntO
|
124 | 118 |
|
|
129 | 123 | Termination Analysis for thisMakesNoProgress
|
130 | 124 |
|
131 | 125 | Function Table
|
132 |
| - 1 f: [g; _ || _ || +Parser.next; f] |
133 |
| - 2 g: +Parser.next; gParam<g:g> |
134 |
| - 3 gParam<g>: [g; _ || f] |
| 126 | + 1 f: [_ || _ || _] |
| 127 | + 2 g: _ |
| 128 | + 3 gParam: [_ || _] |
135 | 129 |
|
136 | 130 | Termination Analysis for f
|
137 | 131 |
|
138 | 132 | Function Table
|
139 |
| - 1 concat<f, g>: switch f {some: switch g {some: Some, none: None}, none: None} |
140 |
| - 2 kleene<f>: switch f {some: kleene<f:f>, none: _} |
141 |
| - 3 one: [+Parser.next; Some || None] |
142 |
| - 4 oneTwo: concat<f:one,g:two> |
143 |
| - 5 oneTwoStar: kleene<f:oneTwo> |
144 |
| - 6 two: [+Parser.next; Some || None] |
| 133 | + 1 kleene: [_ || _] |
| 134 | + 2 one: [Some || None] |
| 135 | + 3 oneTwo: _ |
| 136 | + 4 oneTwoStar: _ |
| 137 | + 5 two: [Some || None] |
145 | 138 |
|
146 | 139 | Termination Analysis for oneTwoStar
|
147 | 140 |
|
148 | 141 | Function Table
|
149 |
| - 1 testTry: [+progress; testTry || +progress; testTry] |
| 142 | + 1 testTry: [_ || _] |
150 | 143 |
|
151 | 144 | Termination Analysis for testTry
|
152 | 145 |
|
153 | 146 | Termination Analysis Stats
|
154 | 147 | Files:1
|
155 | 148 | Recursive Blocks:21
|
156 |
| - Functions:49 |
157 |
| - Infinite Loops:10 |
| 149 | + Functions:42 |
| 150 | + Infinite Loops:0 |
158 | 151 | Hygiene Errors:1
|
159 |
| - Cache Hits:8/31 |
| 152 | + Cache Hits:0/0 |
160 | 153 |
|
161 | 154 |
|
162 |
| - Error Termination |
163 |
| - TestCyberTruck.res:29:28-39 |
164 |
| - Possible infinite loop when calling alwaysLoop |
165 |
| - CallStack: |
166 |
| - 1 alwaysLoop (TestCyberTruck.res 29) |
167 |
| - |
168 |
| - Error Termination |
169 |
| - TestCyberTruck.res:40:3-28 |
170 |
| - Possible infinite loop when calling alwaysProgressWrongOrder |
171 |
| - CallStack: |
172 |
| - 1 alwaysProgressWrongOrder (TestCyberTruck.res 39) |
173 |
| - |
174 | 155 | Error Hygiene
|
175 | 156 | TestCyberTruck.res:47:15-24
|
176 | 157 | doNotAlias can only be called directly, or passed as labeled argument
|
177 |
| - |
178 |
| - Error Termination |
179 |
| - TestCyberTruck.res:68:3-24 |
180 |
| - Possible infinite loop when calling progressOnOneBranch |
181 |
| - CallStack: |
182 |
| - 1 progressOnOneBranch (TestCyberTruck.res 64) |
183 |
| - |
184 |
| - Error Termination |
185 |
| - TestCyberTruck.res:80:48-63 |
186 |
| - Possible infinite loop when calling parseFunction which is testParametricFunction |
187 |
| - CallStack: |
188 |
| - 3 callParseFunction<parseFunction:testParametricFunction> (TestCyberTruck.res 79) |
189 |
| - 2 testParametricFunction2 (TestCyberTruck.res 77) |
190 |
| - 1 testParametricFunction (TestCyberTruck.res 73) |
191 |
| - |
192 |
| - Error Termination |
193 |
| - TestCyberTruck.res:89:3-17 |
194 |
| - Possible infinite loop when calling testCacheHit |
195 |
| - CallStack: |
196 |
| - 1 testCacheHit (TestCyberTruck.res 83) |
197 |
| - |
198 |
| - Error Termination |
199 |
| - TestCyberTruck.res:97:31-58 |
200 |
| - Possible infinite loop when calling evalOrderIsNotLeftToRight |
201 |
| - CallStack: |
202 |
| - 1 evalOrderIsNotLeftToRight (TestCyberTruck.res 95) |
203 |
| - |
204 |
| - Error Termination |
205 |
| - TestCyberTruck.res:104:19-46 |
206 |
| - Possible infinite loop when calling evalOrderIsNotRightToLeft |
207 |
| - CallStack: |
208 |
| - 1 evalOrderIsNotRightToLeft (TestCyberTruck.res 102) |
209 |
| - |
210 |
| - Error Termination |
211 |
| - TestCyberTruck.res:180:15-21 |
212 |
| - Possible infinite loop when calling parseList$loop<f:f> which is parseList$loop<f:parseListInt> |
213 |
| - CallStack: |
214 |
| - 3 parseList$loop<f:parseListInt> (TestCyberTruck.res 183) |
215 |
| - 2 parseList<f:parseListInt> (TestCyberTruck.res 201) |
216 |
| - 1 parseListListInt (TestCyberTruck.res 201) |
217 |
| - |
218 |
| - Error Termination |
219 |
| - TestCyberTruck.res:238:31-49 |
220 |
| - Possible infinite loop when calling loopAfterProgress |
221 |
| - CallStack: |
222 |
| - 1 loopAfterProgress (TestCyberTruck.res 236) |
223 |
| - |
224 |
| - Error Termination |
225 |
| - TestCyberTruck.res:286:32-61 |
226 |
| - Possible infinite loop when calling countRendersCompiled |
227 |
| - CallStack: |
228 |
| - 1 countRendersCompiled (TestCyberTruck.res 283) |
229 | 158 |
|
230 |
| - Analysis reported 11 issues (Error Hygiene:1, Error Termination:10) |
| 159 | + Analysis reported 1 issues (Error Hygiene:1) |
0 commit comments