public StackFrame ReplaceSymbol(string symbolName, SymbolTyping symbolTyping) { Ast.Names.GetTopLevelNames(symbolName) .Do(name => { var key = name.ToCaseSensitivityNormalizedString(_caseSensitivity); _frameSymbols[key] = symbolTyping; }); return(this); }
public StackFrame WithSymbol(string symbolName, SymbolTyping symbolTyping) { Ast.Names.GetTopLevelNames(symbolName) .Do(name => { var key = name.ToCaseSensitivityNormalizedString(_caseSensitivity); if (_frameSymbols.ContainsKey(key)) { var existing = _frameSymbols[key]; throw new InvalidOperationException($"In stack frame, key '{key}' already exists as '{existing.ToString()}'. Attemtping to add symbol typing {symbolTyping.ToString()}"); } _frameSymbols.Add(key, symbolTyping); }); return(this); }