private void DeclareBuiltinVariables() { if (Node == null || Module.ModuleType != ModuleType.User || this is IGlobalScope) { return; } var strType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Str); var objType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Object); VariableCollection.DeclareVariable("__name__", strType, VariableSource.Builtin); if (Node is FunctionDefinition) { var dictType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Dict); var tupleType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Tuple); VariableCollection.DeclareVariable("__closure__", tupleType, VariableSource.Builtin); VariableCollection.DeclareVariable("__code__", objType, VariableSource.Builtin); VariableCollection.DeclareVariable("__defaults__", tupleType, VariableSource.Builtin); VariableCollection.DeclareVariable("__dict__", dictType, VariableSource.Builtin); VariableCollection.DeclareVariable("__doc__", strType, VariableSource.Builtin); VariableCollection.DeclareVariable("__func__", objType, VariableSource.Builtin); VariableCollection.DeclareVariable("__globals__", dictType, VariableSource.Builtin); } else if (Node is ClassDefinition) { VariableCollection.DeclareVariable("__self__", objType, VariableSource.Builtin); } }
private void DeclareBuiltinVariables() { if (Module.ModuleType != ModuleType.User) { return; } var boolType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Bool); var strType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Str); var listType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.List); var dictType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Dict); VariableCollection.DeclareVariable("__debug__", boolType, VariableSource.Builtin, LocationInfo.Empty); VariableCollection.DeclareVariable("__doc__", strType, VariableSource.Builtin, LocationInfo.Empty); VariableCollection.DeclareVariable("__file__", strType, VariableSource.Builtin, LocationInfo.Empty); VariableCollection.DeclareVariable("__name__", strType, VariableSource.Builtin, LocationInfo.Empty); VariableCollection.DeclareVariable("__package__", strType, VariableSource.Builtin, LocationInfo.Empty); VariableCollection.DeclareVariable("__path__", listType, VariableSource.Builtin, LocationInfo.Empty); VariableCollection.DeclareVariable("__dict__", dictType, VariableSource.Builtin, LocationInfo.Empty); }
public void DeclareVariable(string name, IMember value, VariableSource source, Location location = default) => VariableCollection.DeclareVariable(name, value, source, location);
internal void ReplaceVariable(IVariable v) { VariableCollection.RemoveVariable(v.Name); VariableCollection.DeclareVariable(v.Name, v.Value, v.Source, v.Location); }