
  Scanning TestCyberTruck.cmt Source:TestCyberTruck.res

  Function Table
  1 justReturn: _

  Termination Analysis for justReturn

  Function Table
  1 alwaysLoop: alwaysLoop

  Termination Analysis for alwaysLoop

  Function Table
  1 alwaysProgress: +progress; alwaysProgress

  Termination Analysis for alwaysProgress

  Function Table
  1 alwaysProgressWrongOrder: alwaysProgressWrongOrder; +progress

  Termination Analysis for alwaysProgressWrongOrder

  Function Table
  1 doNotAlias: _

  Termination Analysis for doNotAlias

  Function Table
  1 progressOnBothBranches: [+progress || +progress2]; progressOnBothBranches

  Termination Analysis for progressOnBothBranches

  Function Table
  1 progressOnOneBranch: [+progress || _]; progressOnOneBranch

  Termination Analysis for progressOnOneBranch

  Function Table
  1 callParseFunction<parseFunction>: parseFunction
  2 testParametricFunction: [+progress || _]; testParametricFunction2
  3 testParametricFunction2: callParseFunction<parseFunction:testParametricFunction>

  Termination Analysis for testParametricFunction

  Function Table
  1 doNothing: _
  2 testCacheHit: [doNothing; doNothing; +Progress.Nested.f || _]; testCacheHit

  Termination Analysis for testCacheHit

  Function Table
  1 evalOrderIsNotLeftToRight: {+progress, evalOrderIsNotLeftToRight}; _

  Termination Analysis for evalOrderIsNotLeftToRight

  Function Table
  1 evalOrderIsNotRightToLeft: {evalOrderIsNotRightToLeft, +progress}; _

  Termination Analysis for evalOrderIsNotRightToLeft

  Function Table
  1 butFirstArgumentIsAlwaysEvaluated: +progress; butFirstArgumentIsAlwaysEvaluated

  Termination Analysis for butFirstArgumentIsAlwaysEvaluated

  Function Table
  1 butSecondArgumentIsAlwaysEvaluated: +progress; butSecondArgumentIsAlwaysEvaluated

  Termination Analysis for butSecondArgumentIsAlwaysEvaluated

  Function Table
  1 parseExpression: [_ || _]; [+Parser.next; parseExpression; parseExpression; _ || parseInt]
  2 parseInt: [_ || _]; +Parser.next; _
  3 parseList<f>: parseList$loop<f:f>
  4 parseList$loop<f>: [_ || f; parseList$loop<f:f>; _]
  5 parseListExpression: parseList<f:parseExpression>
  6 parseListExpression2: parseExpression; parseList<f:parseExpression>
  7 parseListInt: parseList<f:parseInt>
  8 parseListIntTailRecursive: parseListIntTailRecursive$loop
  9 parseListIntTailRecursive$loop: [_ || parseInt; parseListIntTailRecursive$loop]
  10 parseListListInt: parseList<f:parseListInt>

  Termination Analysis for parseListInt

  Termination Analysis for parseListListInt

  Termination Analysis for parseExpression

  Termination Analysis for parseListExpression

  Termination Analysis for parseListExpression2

  Termination Analysis for parseListIntTailRecursive

  Function Table
  1 loopAfterProgress: loopAfterProgress
  2 testLoopAfterProgress: +progress; loopAfterProgress

  Termination Analysis for testLoopAfterProgress

  Function Table
  1 counterCompiled: +initState; [_ || counterCompiled; _]; _
  2 onClick1: [_ || counterCompiled]

  Termination Analysis for counterCompiled

  Function Table
  1 countRendersCompiled: [_ || countRendersCompiled; _]; _

  Termination Analysis for countRendersCompiled

  Function Table
  1 alwaysReturnNone: [+Parser.next; alwaysReturnNone || None]
  2 parseIntO: [+Parser.next; Some || None]
  3 parseIntOWrapper: parseIntO
  4 parseListIntO: parseListO<f:parseIntO>
  5 parseListO<f>: parseListO$loop<f:f>
  6 parseListO$loop<f>: [+Parser.next; _ || switch f {some: parseListO$loop<f:f>, none: _}]
  7 testAlwaysReturnNone: alwaysReturnNone
  8 thisMakesNoProgress: None; [_ || +Parser.next; Some]

  Termination Analysis for parseListIntO

  Termination Analysis for testAlwaysReturnNone

  Termination Analysis for parseIntOWrapper

  Termination Analysis for thisMakesNoProgress

  Function Table
  1 f: [g; _ || _ || +Parser.next; f]
  2 g: +Parser.next; gParam<g:g>
  3 gParam<g>: [g; _ || f]

  Termination Analysis for f

  Function Table
  1 concat<f, g>: switch f {some: switch g {some: Some, none: None}, none: None}
  2 kleene<f>: switch f {some: kleene<f:f>, none: _}
  3 one: [+Parser.next; Some || None]
  4 oneTwo: concat<f:one,g:two>
  5 oneTwoStar: kleene<f:oneTwo>
  6 two: [+Parser.next; Some || None]

  Termination Analysis for oneTwoStar

  Function Table
  1 testTry: [+progress; testTry || +progress; testTry]

  Termination Analysis for testTry

  Termination Analysis Stats
  Files:1
  Recursive Blocks:21
  Functions:49
  Infinite Loops:10
  Hygiene Errors:1
  Cache Hits:8/31
  

  Error Termination
  TestCyberTruck.res:29:28-39
  Possible infinite loop when calling alwaysLoop
  CallStack:
    1 alwaysLoop (TestCyberTruck.res 29)

  Error Termination
  TestCyberTruck.res:40:3-28
  Possible infinite loop when calling alwaysProgressWrongOrder
  CallStack:
    1 alwaysProgressWrongOrder (TestCyberTruck.res 39)

  Error Hygiene
  TestCyberTruck.res:47:15-24
  doNotAlias can only be called directly, or passed as labeled argument

  Error Termination
  TestCyberTruck.res:68:3-24
  Possible infinite loop when calling progressOnOneBranch
  CallStack:
    1 progressOnOneBranch (TestCyberTruck.res 64)

  Error Termination
  TestCyberTruck.res:80:48-63
  Possible infinite loop when calling parseFunction which is testParametricFunction
  CallStack:
    3 callParseFunction<parseFunction:testParametricFunction> (TestCyberTruck.res 79)
    2 testParametricFunction2 (TestCyberTruck.res 77)
    1 testParametricFunction (TestCyberTruck.res 73)

  Error Termination
  TestCyberTruck.res:89:3-17
  Possible infinite loop when calling testCacheHit
  CallStack:
    1 testCacheHit (TestCyberTruck.res 83)

  Error Termination
  TestCyberTruck.res:97:31-58
  Possible infinite loop when calling evalOrderIsNotLeftToRight
  CallStack:
    1 evalOrderIsNotLeftToRight (TestCyberTruck.res 95)

  Error Termination
  TestCyberTruck.res:104:19-46
  Possible infinite loop when calling evalOrderIsNotRightToLeft
  CallStack:
    1 evalOrderIsNotRightToLeft (TestCyberTruck.res 102)

  Error Termination
  TestCyberTruck.res:180:15-21
  Possible infinite loop when calling parseList$loop<f:f> which is parseList$loop<f:parseListInt>
  CallStack:
    3 parseList$loop<f:parseListInt> (TestCyberTruck.res 183)
    2 parseList<f:parseListInt> (TestCyberTruck.res 201)
    1 parseListListInt (TestCyberTruck.res 201)

  Error Termination
  TestCyberTruck.res:238:31-49
  Possible infinite loop when calling loopAfterProgress
  CallStack:
    1 loopAfterProgress (TestCyberTruck.res 236)

  Error Termination
  TestCyberTruck.res:286:32-61
  Possible infinite loop when calling countRendersCompiled
  CallStack:
    1 countRendersCompiled (TestCyberTruck.res 283)
  
  Analysis reported 11 issues (Error Hygiene:1, Error Termination:10)
