about summary refs log tree commit diff stats
path: root/052tangle.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-10-22 12:08:10 -0700
committerKartik K. Agaram <vc@akkartik.com>2016-10-22 12:08:10 -0700
commitada5eb55cb185edf30dcac48b25cc485d44677ef (patch)
treee147838f053a582e33146ac4fc4ab30ac8434e0e /052tangle.cc
parenta6deb48067f8049922f16ed3489896f7749fd39f (diff)
downloadmu-ada5eb55cb185edf30dcac48b25cc485d44677ef.tar.gz
3552
Stop requiring jump instructions to explicitly provide a ':label' type
for jump targets.

This has been a source of repeated confusion for my students:
  a) They'd add the ':label' to the label definition rather than the
  jump target (label use)
  b) They'd spend time thinking about whether the initial '+' prefix was
  part of the label name.

In the process I cleaned up a couple of things:

  - the space of names is more cleanly partitioned into labels and
    non-labels (clarifying that '_' and '-' are non-label prefixes)
  - you can't use label names as regular variables anymore
  - you can infer the type of a label just from its name
Diffstat (limited to '052tangle.cc')
-rw-r--r--052tangle.cc3
1 files changed, 1 insertions, 2 deletions
diff --git a/052tangle.cc b/052tangle.cc
index 39e9856d..f53e8736 100644
--- a/052tangle.cc
+++ b/052tangle.cc
@@ -148,8 +148,7 @@ void append_fragment(vector<instruction>& base, const vector<instruction>& patch
     }
     for (int j = 0;  j < SIZE(inst.ingredients);  ++j) {
       reagent& x = inst.ingredients.at(j);
-      if (!is_literal(x)) continue;
-      if (x.type->name == "label" && contains_key(jump_targets, x.name))
+      if (is_jump_target(x.name) && contains_key(jump_targets, x.name))
         x.name = prefix+x.name;
     }
     base.push_back(inst);