示例#1
0
 internal static SymbolInfo Create(ImmutableArray<Symbol> symbols, LookupResultKind resultKind, bool isDynamic)
 {
     if (isDynamic)
     {
         if (symbols.Length == 1)
         {
             return new SymbolInfo(symbols[0], CandidateReason.LateBound);
         }
         else
         {
             return new SymbolInfo(StaticCast<ISymbol>.From(symbols), CandidateReason.LateBound);
         }
     }
     else if (resultKind == LookupResultKind.Viable)
     {
         if (symbols.Length > 0)
         {
             Debug.Assert(symbols.Length == 1);
             return new SymbolInfo(symbols[0]);
         }
         else
         {
             return SymbolInfo.None;
         }
     }
     else
     {
         return new SymbolInfo(StaticCast<ISymbol>.From(symbols), (symbols.Length > 0) ? resultKind.ToCandidateReason() : CandidateReason.None);
     }
 }
示例#2
0
 internal static SymbolInfo Create(
     ImmutableArray <Symbol> symbols,
     LookupResultKind resultKind,
     bool isDynamic
     )
 {
     if (isDynamic)
     {
         if (symbols.Length == 1)
         {
             return(new SymbolInfo(symbols[0].GetPublicSymbol(), CandidateReason.LateBound));
         }
         else
         {
             return(new SymbolInfo(symbols.GetPublicSymbols(), CandidateReason.LateBound));
         }
     }
     else if (resultKind == LookupResultKind.Viable)
     {
         if (symbols.Length > 0)
         {
             Debug.Assert(symbols.Length == 1);
             return(new SymbolInfo(symbols[0].GetPublicSymbol()));
         }
         else
         {
             return(SymbolInfo.None);
         }
     }
     else
     {
         return(new SymbolInfo(
                    symbols.GetPublicSymbols(),
                    (symbols.Length > 0) ? resultKind.ToCandidateReason() : CandidateReason.None
                    ));
     }
 }
示例#3
0
 internal static SymbolInfo Create(ImmutableArray <Symbol> symbols, LookupResultKind resultKind)
 {
     if (resultKind == LookupResultKind.Viable)
     {
         if (symbols.Length > 0)
         {
             Debug.Assert(symbols.Length == 1);
             return(new SymbolInfo(symbols[0]));
         }
         else
         {
             return(SymbolInfo.None);
         }
     }
     else
     {
         return(new SymbolInfo(StaticCast <ISymbol> .From(symbols), (symbols.Length > 0) ? resultKind.ToCandidateReason() : CandidateReason.None));
     }
 }