public override IEnumerable <Symbol> getSymbolsByName(string name, Filter sf, LookupKind lookupKind = LookupKind.RECURSIVE) { IEnumerable <Symbol> primaryResult = primary.getSymbolsByName(name, sf, lookupKind); return(lookupKind == LookupKind.RECURSIVE ? primaryResult.Concat(secondary.getSymbolsByName(name, sf, lookupKind)) : primaryResult); }
public bool checkUniqueLocalVar(DiagnosticPosition pos, VarSymbol varSymbol, WritableScope scope) { if (scope.getSymbolsByName(varSymbol.name, s => (s.kind & Kind.VAR) != 0).Any()) { log.error(pos, messages.duplicateVar, varSymbol.name); return(false); } return(true); }
public bool checkUnique(DiagnosticPosition pos, StructSymbol ssym, WritableScope scope) { bool contains = scope.getSymbolsByName(ssym.name, LookupKind.NON_RECURSIVE).Any(); if (contains) { log.error(pos, messages.duplicateStructName, ssym.name); } return(!contains); }
public override IEnumerable <Symbol> getSymbolsByName(String name, Filter sf, LookupKind lookupKind = LookupKind.RECURSIVE) { IEnumerable <Symbol> localResult = dict.TryGetValue(name, out var s) ? s.Where(sf) : CollectionUtils.emptyList <Symbol>(); return(lookupKind is LookupKind.RECURSIVE && outer != null ? localResult.Concat(outer.getSymbolsByName(name, sf)) : localResult); }