diff --git a/minproto.leg b/minproto.leg index 8caa604..ffdef17 100644 --- a/minproto.leg +++ b/minproto.leg @@ -4311,6 +4311,22 @@ oop prim___eval__(oop func, oop self, oop args, oop env) return self; } +oop prim_intern(oop func, oop self, oop args, oop env) +{ + int argc = _get(args, Object,isize); + oop *indexed = _get(args, Object,indexed); + oop result = nil; + + if (argc != 1) { + fatal("intern: invalid number of arguments"); + } + if (getType(indexed[0]) != String) { + fatal("intern: argument is not of type String, got %s instead", getTypeName(indexed[0])); + } + + return intern(_get(indexed[0], String, value)); +} + oop prim_print(oop func, oop self, oop args, oop env) { int argc = _get(args, Object,isize); @@ -5379,6 +5395,7 @@ int main(int argc, char **argv) prim(defined , prim_defined); prim(__extern__ , prim_extern); prim(__match__ , prim_match); + prim(intern , prim_intern); # undef prim