public void DeclareVariable(string name, IMember value, VariableSource source, Location location, bool overwrite = true) { var member = GetInScope(name); if (member != null && !overwrite) { return; } if (source == VariableSource.Import && value is IVariable v) { CurrentScope.LinkVariable(name, v, location); return; } if (member != null) { if (!value.IsUnknown()) { CurrentScope.DeclareVariable(name, value, source, location); } } else { CurrentScope.DeclareVariable(name, value, source, location); } }
public void DeclareVariable(string name, IMember value, VariableSource source, Location location, bool overwrite = true) { if (source == VariableSource.Import) { // Duplicate declaration so if variable gets overwritten it can still be retrieved. Consider: // from X import A // class A(A): ... CurrentScope.DeclareImported(name, value, location); } var member = GetInScope(name); if (member != null && !overwrite) { return; } if (source == VariableSource.Import && value is IVariable v) { CurrentScope.LinkVariable(name, v, location); return; } if (member != null) { if (!value.IsUnknown()) { CurrentScope.DeclareVariable(name, value, source, location); } } else { CurrentScope.DeclareVariable(name, value, source, location); } }
public void DeclareVariable(string name, IMember value, LocationInfo location, bool overwrite = false) { var member = GetInScope(name); if (member != null) { if (!value.IsUnknown()) { CurrentScope.DeclareVariable(name, value, location); } } else { CurrentScope.DeclareVariable(name, value, location); } }