public BuiltinClass(string name, BuiltinClass builtinClass, Dictionary <string, BuiltinFunction> methods, Dictionary <string, BuiltinFunction> staticMethods, bool isClassInstance = false) { this.name = name; superclass = builtinClass; this.methods = methods; this.staticMethods = staticMethods; this.IsClassInstance = isClassInstance; }
public object Call(Interpreter interpreter, List <object> args) { var instance = new BuiltinClass( name, superclass.Call(interpreter, args) as BuiltinClass, methods, staticMethods, true ); BuiltinFunction constructor = GetMethod("constructor"); if (constructor != null) { constructor.Bind(instance, superclass).Call(interpreter, args); } return(instance); }