diff options
Diffstat (limited to 'html/054static_dispatch.cc.html')
-rw-r--r-- | html/054static_dispatch.cc.html | 108 |
1 files changed, 55 insertions, 53 deletions
diff --git a/html/054static_dispatch.cc.html b/html/054static_dispatch.cc.html index cfcbde40..2e0c7318 100644 --- a/html/054static_dispatch.cc.html +++ b/html/054static_dispatch.cc.html @@ -16,12 +16,14 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color .Constant { color: #00a0a0; } .traceAbsent { color: #c00000; } .cSpecial { color: #008000; } -.traceContains { color: #008000; } +.muRecipe { color: #ff8700; } .Comment { color: #9090ff; } .Delimiter { color: #800080; } .Special { color: #c00000; } -.Identifier { color: #fcb165; } +.traceContains { color: #008000; } .Normal { color: #eeeeee; background-color: #080808; padding-bottom: 1px; } +.muData { color: #ffff00; } +.Identifier { color: #fcb165; } --> </style> @@ -38,13 +40,13 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color <span class="Comment">//: names like 'print' or 'length' in many mutually extensible ways.</span> <span class="Delimiter">:(scenario static_dispatch)</span> -def main [ +<span class="muRecipe">def</span> main [ <span class="Constant">7</span>:num/<span class="Special">raw <- </span>test <span class="Constant">3</span> ] -def test a:num <span class="Delimiter">-></span> z:num [ +<span class="muRecipe">def</span> test a:num<span class="muRecipe"> -> </span>z:num [ z<span class="Special"> <- </span>copy <span class="Constant">1</span> ] -def test a:num<span class="Delimiter">,</span> b:num <span class="Delimiter">-></span> z:num [ +<span class="muRecipe">def</span> test a:num<span class="Delimiter">,</span> b:num<span class="muRecipe"> -> </span>z:num [ z<span class="Special"> <- </span>copy <span class="Constant">2</span> ] <span class="traceContains">+mem: storing 1 in location 7</span> @@ -153,13 +155,13 @@ string next_unused_recipe_name<span class="Delimiter">(</span><span class="Norma <span class="Comment">//: call with the most suitable variant.</span> <span class="Delimiter">:(scenario static_dispatch_picks_most_similar_variant)</span> -def main [ +<span class="muRecipe">def</span> main [ <span class="Constant">7</span>:num/<span class="Special">raw <- </span>test <span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">4</span><span class="Delimiter">,</span> <span class="Constant">5</span> ] -def test a:num <span class="Delimiter">-></span> z:num [ +<span class="muRecipe">def</span> test a:num<span class="muRecipe"> -> </span>z:num [ z<span class="Special"> <- </span>copy <span class="Constant">1</span> ] -def test a:num<span class="Delimiter">,</span> b:num <span class="Delimiter">-></span> z:num [ +<span class="muRecipe">def</span> test a:num<span class="Delimiter">,</span> b:num<span class="muRecipe"> -> </span>z:num [ z<span class="Special"> <- </span>copy <span class="Constant">2</span> ] <span class="traceContains">+mem: storing 2 in location 7</span> @@ -420,10 +422,10 @@ vector<recipe_ordinal> matching_variants<span class="Delimiter">(</span><s <span class="Delimiter">}</span> <span class="Delimiter">:(scenario static_dispatch_disabled_in_recipe_without_variants)</span> -def main [ +<span class="muRecipe">def</span> main [ <span class="Constant">1</span>:num<span class="Special"> <- </span>test <span class="Constant">3</span> ] -def test [ +<span class="muRecipe">def</span> test [ <span class="Constant">2</span>:num<span class="Special"> <- </span>next-ingredient <span class="Comment"># ensure no header</span> <span class="Identifier">return</span> <span class="Constant">34</span> ] @@ -431,26 +433,26 @@ def test [ <span class="Delimiter">:(scenario static_dispatch_disabled_on_headerless_definition)</span> <span class="Special">% Hide_errors = true;</span> -def test a:num <span class="Delimiter">-></span> z:num [ +<span class="muRecipe">def</span> test a:num<span class="muRecipe"> -> </span>z:num [ z<span class="Special"> <- </span>copy <span class="Constant">1</span> ] -def test [ +<span class="muRecipe">def</span> test [ <span class="Identifier">return</span> <span class="Constant">34</span> ] <span class="traceContains">+error: redefining recipe test</span> <span class="Delimiter">:(scenario static_dispatch_disabled_on_headerless_definition_2)</span> <span class="Special">% Hide_errors = true;</span> -def test [ +<span class="muRecipe">def</span> test [ <span class="Identifier">return</span> <span class="Constant">34</span> ] -def test a:num <span class="Delimiter">-></span> z:num [ +<span class="muRecipe">def</span> test a:num<span class="muRecipe"> -> </span>z:num [ z<span class="Special"> <- </span>copy <span class="Constant">1</span> ] <span class="traceContains">+error: redefining recipe test</span> <span class="Delimiter">:(scenario static_dispatch_on_primitive_names)</span> -def main [ +<span class="muRecipe">def</span> main [ <span class="Constant">1</span>:num<span class="Special"> <- </span>copy <span class="Constant">34</span> <span class="Constant">2</span>:num<span class="Special"> <- </span>copy <span class="Constant">34</span> <span class="Constant">3</span>:<span class="Normal">bool</span><span class="Special"> <- </span>equal <span class="Constant">1</span>:num<span class="Delimiter">,</span> <span class="Constant">2</span>:num @@ -459,7 +461,7 @@ def main [ <span class="Constant">6</span>:<span class="Normal">bool</span><span class="Special"> <- </span>equal <span class="Constant">4</span>:<span class="Normal">bool</span><span class="Delimiter">,</span> <span class="Constant">5</span>:<span class="Normal">bool</span> ] <span class="Comment"># temporarily hardcode number equality to always fail</span> -def equal x:num<span class="Delimiter">,</span> y:num <span class="Delimiter">-></span> z:<span class="Normal">bool</span> [ +<span class="muRecipe">def</span> equal x:num<span class="Delimiter">,</span> y:num<span class="muRecipe"> -> </span>z:<span class="Normal">bool</span> [ local-scope load-ingredients z<span class="Special"> <- </span>copy <span class="Constant">0</span>/<span class="Constant">false</span> @@ -470,15 +472,15 @@ def equal x:num<span class="Delimiter">,</span> y:num <span class="Delimiter">-& <span class="traceContains">+mem: storing 1 in location 6</span> <span class="Delimiter">:(scenario static_dispatch_works_with_dummy_results_for_containers)</span> -def main [ +<span class="muRecipe">def</span> main [ _<span class="Special"> <- </span>test <span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">4</span> ] -def test a:num <span class="Delimiter">-></span> z:point [ +<span class="muRecipe">def</span> test a:num<span class="muRecipe"> -> </span>z:point [ local-scope load-ingredients z<span class="Special"> <- </span>merge a<span class="Delimiter">,</span> <span class="Constant">0</span> ] -def test a:num<span class="Delimiter">,</span> b:num <span class="Delimiter">-></span> z:point [ +<span class="muRecipe">def</span> test a:num<span class="Delimiter">,</span> b:num<span class="muRecipe"> -> </span>z:point [ local-scope load-ingredients z<span class="Special"> <- </span>merge a<span class="Delimiter">,</span> b @@ -486,55 +488,55 @@ def test a:num<span class="Delimiter">,</span> b:num <span class="Delimiter">-&g $error: <span class="Constant">0</span> <span class="Delimiter">:(scenario static_dispatch_works_with_compound_type_containing_container_defined_after_first_use)</span> -def main [ - <span class="Normal">x</span>:&:foo<span class="Special"> <- </span><span class="Normal">new</span> foo:type +<span class="muRecipe">def</span> main [ + <span class="Normal">x</span>:&:foo<span class="Special"> <- </span><span class="Normal">new</span> <span class="Constant">foo:type</span> test x ] -container foo [ +<span class="muData">container</span> foo [ <span class="Normal">x</span>:num ] -def test a:&:foo <span class="Delimiter">-></span> z:num [ +<span class="muRecipe">def</span> test a:&:foo<span class="muRecipe"> -> </span>z:num [ local-scope load-ingredients - <span class="Normal">z</span>:num<span class="Special"> <- </span>get *a<span class="Delimiter">,</span> x:offset + <span class="Normal">z</span>:num<span class="Special"> <- </span>get *a<span class="Delimiter">,</span> <span class="Constant">x:offset</span> ] $error: <span class="Constant">0</span> <span class="Delimiter">:(scenario static_dispatch_works_with_compound_type_containing_container_defined_after_second_use)</span> -def main [ - <span class="Normal">x</span>:&:foo<span class="Special"> <- </span><span class="Normal">new</span> foo:type +<span class="muRecipe">def</span> main [ + <span class="Normal">x</span>:&:foo<span class="Special"> <- </span><span class="Normal">new</span> <span class="Constant">foo:type</span> test x ] -def test a:&:foo <span class="Delimiter">-></span> z:num [ +<span class="muRecipe">def</span> test a:&:foo<span class="muRecipe"> -> </span>z:num [ local-scope load-ingredients - <span class="Normal">z</span>:num<span class="Special"> <- </span>get *a<span class="Delimiter">,</span> x:offset + <span class="Normal">z</span>:num<span class="Special"> <- </span>get *a<span class="Delimiter">,</span> <span class="Constant">x:offset</span> ] -container foo [ +<span class="muData">container</span> foo [ <span class="Normal">x</span>:num ] $error: <span class="Constant">0</span> <span class="Delimiter">:(scenario static_dispatch_prefers_literals_to_be_numbers_rather_than_addresses)</span> -def main [ +<span class="muRecipe">def</span> main [ <span class="Constant">1</span>:num<span class="Special"> <- </span>foo <span class="Constant">0</span> ] -def foo x:&:num <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span> foo x:&:num<span class="muRecipe"> -> </span>y:num [ <span class="Identifier">return</span> <span class="Constant">34</span> ] -def foo x:num <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -> </span>y:num [ <span class="Identifier">return</span> <span class="Constant">35</span> ] <span class="traceContains">+mem: storing 35 in location 1</span> <span class="Delimiter">:(scenario static_dispatch_on_non_literal_character_ignores_variant_with_numbers)</span> <span class="Special">% Hide_errors = true;</span> -def main [ +<span class="muRecipe">def</span> main [ local-scope <span class="Normal">x</span>:<span class="Normal">char</span><span class="Special"> <- </span>copy <span class="Constant">10</span>/newline <span class="Constant">1</span>:num/<span class="Special">raw <- </span>foo x ] -def foo x:num <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -> </span>y:num [ load-ingredients <span class="Identifier">return</span> <span class="Constant">34</span> ] @@ -542,15 +544,15 @@ def foo x:num <span class="Delimiter">-></span> y:num [ <span class="traceAbsent">-mem: storing 34 in location 1</span> <span class="Delimiter">:(scenario static_dispatch_dispatches_literal_to_boolean_before_character)</span> -def main [ +<span class="muRecipe">def</span> main [ <span class="Constant">1</span>:num/<span class="Special">raw <- </span>foo <span class="Constant">0</span> <span class="Comment"># valid literal for boolean</span> ] -def foo x:<span class="Normal">char</span> <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span> foo x:<span class="Normal">char</span><span class="muRecipe"> -> </span>y:num [ local-scope load-ingredients <span class="Identifier">return</span> <span class="Constant">34</span> ] -def foo x:<span class="Normal">bool</span> <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span> foo x:<span class="Normal">bool</span><span class="muRecipe"> -> </span>y:num [ local-scope load-ingredients <span class="Identifier">return</span> <span class="Constant">35</span> @@ -559,15 +561,15 @@ def foo x:<span class="Normal">bool</span> <span class="Delimiter">-></span> <span class="traceContains">+mem: storing 35 in location 1</span> <span class="Delimiter">:(scenario static_dispatch_dispatches_literal_to_character_when_out_of_boolean_range)</span> -def main [ +<span class="muRecipe">def</span> main [ <span class="Constant">1</span>:num/<span class="Special">raw <- </span>foo <span class="Constant">97</span> <span class="Comment"># not a valid literal for boolean</span> ] -def foo x:<span class="Normal">char</span> <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span> foo x:<span class="Normal">char</span><span class="muRecipe"> -> </span>y:num [ local-scope load-ingredients <span class="Identifier">return</span> <span class="Constant">34</span> ] -def foo x:<span class="Normal">bool</span> <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span> foo x:<span class="Normal">bool</span><span class="muRecipe"> -> </span>y:num [ local-scope load-ingredients <span class="Identifier">return</span> <span class="Constant">35</span> @@ -576,15 +578,15 @@ def foo x:<span class="Normal">bool</span> <span class="Delimiter">-></span> <span class="traceContains">+mem: storing 34 in location 1</span> <span class="Delimiter">:(scenario static_dispatch_dispatches_literal_to_number_if_at_all_possible)</span> -def main [ +<span class="muRecipe">def</span> main [ <span class="Constant">1</span>:num/<span class="Special">raw <- </span>foo <span class="Constant">97</span> ] -def foo x:<span class="Normal">char</span> <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span> foo x:<span class="Normal">char</span><span class="muRecipe"> -> </span>y:num [ local-scope load-ingredients <span class="Identifier">return</span> <span class="Constant">34</span> ] -def foo x:num <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -> </span>y:num [ local-scope load-ingredients <span class="Identifier">return</span> <span class="Constant">35</span> @@ -608,21 +610,21 @@ string header_label<span class="Delimiter">(</span><span class="Normal">const</s <span class="Delimiter">}</span> <span class="Delimiter">:(scenario reload_variant_retains_other_variants)</span> -def main [ +<span class="muRecipe">def</span> main [ <span class="Constant">1</span>:num<span class="Special"> <- </span>copy <span class="Constant">34</span> <span class="Constant">2</span>:num<span class="Special"> <- </span>foo <span class="Constant">1</span>:num ] -def foo x:num <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -> </span>y:num [ local-scope load-ingredients <span class="Identifier">return</span> <span class="Constant">34</span> ] -def foo x:&:num <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span> foo x:&:num<span class="muRecipe"> -> </span>y:num [ local-scope load-ingredients <span class="Identifier">return</span> <span class="Constant">35</span> ] -def! foo x:&:num <span class="Delimiter">-></span> y:num [ +<span class="muRecipe">def</span>! foo x:&:num<span class="muRecipe"> -> </span>y:num [ local-scope load-ingredients <span class="Identifier">return</span> <span class="Constant">36</span> @@ -632,15 +634,15 @@ $error: <span class="Constant">0</span> <span class="Delimiter">:(scenario dispatch_errors_come_after_unknown_name_errors)</span> <span class="Special">% Hide_errors = true;</span> -def main [ +<span class="muRecipe">def</span> main [ <span class="Normal">y</span>:num<span class="Special"> <- </span>foo x ] -def foo a:num <span class="Delimiter">-></span> b:num [ +<span class="muRecipe">def</span> foo a:num<span class="muRecipe"> -> </span>b:num [ local-scope load-ingredients <span class="Identifier">return</span> <span class="Constant">34</span> ] -def foo a:<span class="Normal">bool</span> <span class="Delimiter">-></span> b:num [ +<span class="muRecipe">def</span> foo a:<span class="Normal">bool</span><span class="muRecipe"> -> </span>b:num [ local-scope load-ingredients <span class="Identifier">return</span> <span class="Constant">35</span> @@ -649,16 +651,16 @@ def foo a:<span class="Normal">bool</span> <span class="Delimiter">-></span> <span class="traceContains">+error: main: failed to find a matching call for 'y:num <- foo x'</span> <span class="Delimiter">:(scenario override_methods_with_type_abbreviations)</span> -def main [ +<span class="muRecipe">def</span> main [ local-scope <span class="Normal">s</span>:text<span class="Special"> <- </span><span class="Normal">new</span> [abc] <span class="Constant">1</span>:num/<span class="Special">raw <- </span>foo s ] -def foo a:address:array:character <span class="Delimiter">-></span> result:number [ +<span class="muRecipe">def</span> foo a:address:array:character<span class="muRecipe"> -> </span>result:number [ <span class="Identifier">return</span> <span class="Constant">34</span> ] <span class="Comment"># identical to previous variant once you take type abbreviations into account</span> -def! foo a:text <span class="Delimiter">-></span> result:num [ +<span class="muRecipe">def</span>! foo a:text<span class="muRecipe"> -> </span>result:num [ <span class="Identifier">return</span> <span class="Constant">35</span> ] <span class="traceContains">+mem: storing 35 in location 1</span> |