diff options
Diffstat (limited to 'html/048check_type_by_name.cc.html')
-rw-r--r-- | html/048check_type_by_name.cc.html | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/html/048check_type_by_name.cc.html b/html/048check_type_by_name.cc.html index d091ba31..13703a0e 100644 --- a/html/048check_type_by_name.cc.html +++ b/html/048check_type_by_name.cc.html @@ -21,7 +21,6 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; } .Delimiter { color: #a04060; } .Special { color: #ff6060; } .CommentedCode { color: #6c6c6c; } -.Todo { color: #000000; background-color: #ffff00; padding-bottom: 1px; } --> </style> @@ -49,11 +48,11 @@ recipe main [ ] <span class="traceContains">+error: main: x used with multiple types</span> -<span class="Delimiter">:(before "Transform.push_back(check_or_set_invalid_types)")</span> -Transform<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>check_types_by_name<span class="Delimiter">);</span> <span class="Comment">// idempotent</span> +<span class="Delimiter">:(after "Begin Instruction Modifying Transforms")</span> +Transform<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>check_or_set_types_by_name<span class="Delimiter">);</span> <span class="Comment">// idempotent</span> <span class="Delimiter">:(code)</span> -void check_types_by_name<span class="Delimiter">(</span>const recipe_ordinal r<span class="Delimiter">)</span> <span class="Delimiter">{</span> +void check_or_set_types_by_name<span class="Delimiter">(</span>const recipe_ordinal r<span class="Delimiter">)</span> <span class="Delimiter">{</span> trace<span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">"transform"</span><span class="Delimiter">)</span> << <span class="Constant">"--- deduce types for recipe "</span> << get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name << end<span class="Delimiter">();</span> <span class="CommentedCode">//? cerr << "--- deduce types for recipe " << get(Recipe, r).name << '\n';</span> map<string<span class="Delimiter">,</span> type_tree*> type<span class="Delimiter">;</span> @@ -82,7 +81,6 @@ void deduce_missing_type<span class="Delimiter">(</span>map<string<span class void check_type<span class="Delimiter">(</span>map<string<span class="Delimiter">,</span> type_tree*>& type<span class="Delimiter">,</span> map<string<span class="Delimiter">,</span> string_tree*>& type_name<span class="Delimiter">,</span> const reagent& x<span class="Delimiter">,</span> const recipe_ordinal r<span class="Delimiter">)</span> <span class="Delimiter">{</span> if <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span> - if <span class="Delimiter">(</span>is_raw<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span> <span class="Comment">// </span><span class="Todo">TODO</span><span class="Comment">: delete this</span> <span class="Comment">// if you use raw locations you're probably doing something unsafe</span> if <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> if <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">// will throw a more precise error elsewhere</span> @@ -93,7 +91,7 @@ void check_type<span class="Delimiter">(</span>map<string<span class="Delimit if <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>type_name<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span> type_name[x<span class="Delimiter">.</span>name] = x<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>second<span class="Delimiter">;</span> <span class="Delimiter">}</span> - if <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>type[x<span class="Delimiter">.</span>name]<span class="Delimiter">,</span> x<span class="Delimiter">.</span>type<span class="Delimiter">))</span> + if <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>type[x<span class="Delimiter">.</span>name]<span class="Delimiter">,</span> x<span class="Delimiter">.</span>type<span class="Delimiter">))</span> raise_error << maybe<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> << x<span class="Delimiter">.</span>name << <span class="Constant">" used with multiple types</span><span class="cSpecial">\n</span><span class="Constant">"</span> << end<span class="Delimiter">();</span> <span class="Delimiter">}</span> @@ -130,7 +128,7 @@ recipe main [ y:address:charcter<span class="Special"> <- </span>new character:type *y<span class="Special"> <- </span>copy <span class="Constant">67</span> ] -<span class="traceContains">+error: main: unknown type in 'y:address:charcter <- new character:type'</span> +<span class="traceContains">+error: main: unknown type charcter in 'y:address:charcter <- new character:type'</span> </pre> </body> </html> |