/* Make sure we raise an exception when we improperly call * a procedure which refers to a class variable (i.e. when * !(self ?= foo)) */ class foo { var bletch = "Hello, world\n"; public var bar; public proc nose(v) { v.bar = proc() { "", bletch; }; } } foo foobar(); proc main() { var i; // Indirectly call the NIL foobar.bar - should succeed silently i = foobar.bar; i(); // Indirectly call foobar.nose() - should succeed i = foobar.nose; i(foobar); // Directly call foobar.bar() - should print "Hello, world\n" foobar.bar(); try { // Try to indirectly call foobar.bar - it should throw // an exception i = foobar.bar; i(); } catch (e) { "Caught ", e, "; all is well\n"; } }