diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-10-22 16:27:36 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-10-22 16:27:36 -0700 |
commit | c02478c4010d54acfaed0318a2c2c689b468e92e (patch) | |
tree | 8cdc5a15f685e4ef27205a59306f5781a10b3899 /html/047check_type_by_name.cc.html | |
parent | 6a9d8191dfb5606f8d3630375f3ec045bd534ba3 (diff) | |
download | mu-c02478c4010d54acfaed0318a2c2c689b468e92e.tar.gz |
3558
Diffstat (limited to 'html/047check_type_by_name.cc.html')
-rw-r--r-- | html/047check_type_by_name.cc.html | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/html/047check_type_by_name.cc.html b/html/047check_type_by_name.cc.html index bf4db2e0..234fdb2c 100644 --- a/html/047check_type_by_name.cc.html +++ b/html/047check_type_by_name.cc.html @@ -14,6 +14,7 @@ pre { white-space: pre-wrap; font-family: monospace; color: #eeeeee; background- body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color: #080808; } * { font-size: 12pt; font-size: 1em; } .Constant { color: #00a0a0; } +.traceAbsent { color: #c00000; } .cSpecial { color: #008000; } .muRecipe { color: #ff8700; } .Comment { color: #9090ff; } @@ -72,6 +73,10 @@ Transform<span class="Delimiter">.</span>push_back<span class="Delimiter">(</spa <span class="Normal">void</span> deduce_missing_type<span class="Delimiter">(</span>set<reagent>& known<span class="Delimiter">,</span> reagent& x<span class="Delimiter">)</span> <span class="Delimiter">{</span> <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span> + <span class="Normal">if</span> <span class="Delimiter">(</span>is_jump_target<span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span> + x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">"label"</span><span class="Delimiter">);</span> + <span class="Identifier">return</span><span class="Delimiter">;</span> + <span class="Delimiter">}</span> <span class="Normal">if</span> <span class="Delimiter">(</span>known<span class="Delimiter">.</span>find<span class="Delimiter">(</span>x<span class="Delimiter">)</span> == known<span class="Delimiter">.</span>end<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span> x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*known<span class="Delimiter">.</span>find<span class="Delimiter">(</span>x<span class="Delimiter">)-></span>type<span class="Delimiter">);</span> trace<span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">"transform"</span><span class="Delimiter">)</span> << x<span class="Delimiter">.</span>name << <span class="Constant">" <= "</span> << names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> << end<span class="Delimiter">();</span> @@ -81,6 +86,11 @@ Transform<span class="Delimiter">.</span>push_back<span class="Delimiter">(</spa <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_integer<span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span> <span class="Comment">// if you use raw locations you're probably doing something unsafe</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span> <span class="Comment">// might get filled in by other logic later</span> + <span class="Normal">if</span> <span class="Delimiter">(</span>is_jump_target<span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span> + <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">-></span>atom || x<span class="Delimiter">.</span>type<span class="Delimiter">-></span>name != <span class="Constant">"label"</span><span class="Delimiter">)</span> + raise << maybe<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> << <span class="Constant">"non-label '"</span> << x<span class="Delimiter">.</span>name << <span class="Constant">"' must begin with a letter</span><span class="cSpecial">\n</span><span class="Constant">"</span> << end<span class="Delimiter">();</span> + <span class="Identifier">return</span><span class="Delimiter">;</span> + <span class="Delimiter">}</span> <span class="Normal">if</span> <span class="Delimiter">(</span>known<span class="Delimiter">.</span>find<span class="Delimiter">(</span>x<span class="Delimiter">)</span> == known<span class="Delimiter">.</span>end<span class="Delimiter">())</span> <span class="Delimiter">{</span> trace<span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">"transform"</span><span class="Delimiter">)</span> << x<span class="Delimiter">.</span>name << <span class="Constant">" => "</span> << names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> << end<span class="Delimiter">();</span> known<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>x<span class="Delimiter">);</span> @@ -125,6 +135,14 @@ Transform<span class="Delimiter">.</span>push_back<span class="Delimiter">(</spa <span class="Comment"># x is in location 1</span> <span class="traceContains">+mem: storing 2 in location 1</span> +<span class="Delimiter">:(scenario transform_fills_in_missing_label_type)</span> +<span class="muRecipe">def</span> main [ + jump +target + <span class="Constant">1</span>:num<span class="Special"> <- </span>copy <span class="Constant">0</span> + +target +] +<span class="traceAbsent">-mem: storing 0 in location 1</span> + <span class="Delimiter">:(scenario transform_fails_on_missing_types_in_first_mention)</span> <span class="Special">% Hide_errors = true;</span> <span class="muRecipe">def</span> main [ @@ -133,6 +151,13 @@ Transform<span class="Delimiter">.</span>push_back<span class="Delimiter">(</spa ] <span class="traceContains">+error: main: missing type for 'x' in 'x <- copy 1'</span> +<span class="Delimiter">:(scenario transform_fails_on_wrong_type_for_label)</span> +<span class="Special">% Hide_errors = true;</span> +<span class="muRecipe">def</span> main [ + +foo:num<span class="Special"> <- </span>copy <span class="Constant">34</span> +] +<span class="traceContains">+error: main: non-label '+foo' must begin with a letter</span> + <span class="Delimiter">:(scenario typo_in_address_type_fails)</span> <span class="Special">% Hide_errors = true;</span> <span class="muRecipe">def</span> main [ |