Пример #1
0
        public StackFrame ReplaceSymbol(string symbolName, SymbolTyping symbolTyping)
        {
            Ast.Names.GetTopLevelNames(symbolName)
            .Do(name =>
            {
                var key            = name.ToCaseSensitivityNormalizedString(_caseSensitivity);
                _frameSymbols[key] = symbolTyping;
            });

            return(this);
        }
Пример #2
0
        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);
        }