-- main.mcl -- class c1 { test "t1" {} $y = "hello" class c0 { test "t2" {} $x = "goodbye" } } include c1 as i1 # has $y include i1.c0 as i0 # has $x ...and $y test "${i0.x}" {} # ok test "${i1.y}" {} # ok panic($i0.x != "goodbye") panic($i1.y != "hello") # the really tricky case # XXX: works atm, but not supported for now, error is: # could not set scope: var `$i0.y` does not exist in this scope # We currently re-export anything in the parent scope as available from our # current child scope, which makes this variable visible. Unfortunately, it does # not have the correct dependency (edge) present in the Ordering system, so it # is flaky depending on luck of the toposort. #test "${i0.y}" {} -- OUTPUT -- Vertex: test[goodbye] Vertex: test[hello] Vertex: test[t1] Vertex: test[t2]