Beispiel #1
0
Datei: Scope.cs Projekt: irpbc/mj
            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);
            }
Beispiel #2
0
 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);
 }
Beispiel #3
0
        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);
        }
Beispiel #4
0
Datei: Scope.cs Projekt: irpbc/mj
            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);
            }