Exemplo n.º 1
0
        /// <summary>
        /// Evaluates a member using by resolving a symbol by a full name.
        /// </summary>
        /// <remarks>
        /// DScript V2 feature.
        /// </remarks>
        internal EvaluationResult EvaluateEntryByFullName(Context context, FullSymbol fullName, LineInfo location)
        {
            ResolvedEntry resolvedEntry = default(ResolvedEntry);

            if (CurrentFileModule?.TryGetResolvedEntryByFullName(fullName, out resolvedEntry) == true)
            {
                return(EvaluateResolvedSymbol(context, this, location, resolvedEntry));
            }

            // This is an assertion but not a graceful error, because resolution may fail only if something went wrong.
            string message = I($"Can't find resolved symbol by a full name '{fullName.ToString(context.FrontEndContext.SymbolTable)}'");

            Contract.Assert(false, message);

            return(EvaluationResult.Undefined);
        }
Exemplo n.º 2
0
        private bool TryResolveEntryByLocation(Context context, FilePosition filePosition, FullSymbol nameForDebuggingPurposes, out ResolvedEntry resolvedEntry, out FileModuleLiteral owningFileModule)
        {
            owningFileModule = default(FileModuleLiteral);
            resolvedEntry    = default(ResolvedEntry);

            if (CurrentFileModule?.TryGetResolvedEntry(context.ModuleRegistry, filePosition, out resolvedEntry, out owningFileModule) == true)
            {
                return(true);
            }

            // This is an assertion but not a graceful error, because resolution may fail only if something went wrong.
            string message =
                I($"Can't find resolved symbol '{nameForDebuggingPurposes.ToString(context.FrontEndContext.SymbolTable)}' at position '{filePosition.Position}' from source file '{filePosition.Path.ToString(context.PathTable)}'");

            Contract.Assert(false, message);
            return(false);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Stores a given resolved entry at a given location.
 /// </summary>
 public virtual void AddResolvedEntry(FilePosition location, ResolvedEntry entry)
 {
     CurrentFileModule?.AddResolvedEntry(location, entry);
 }
Exemplo n.º 4
0
 /// <summary>
 /// Stores a given resolved entry by a given name.
 /// </summary>
 public virtual void AddResolvedEntry(FullSymbol fullName, ResolvedEntry entry)
 {
     CurrentFileModule?.AddResolvedEntry(fullName, entry);
 }
Exemplo n.º 5
0
        // Following set of methods are used in V2 name resolution based on a semantic information from the checker.

        /// <summary>
        /// Stores a given function at a given location.
        /// </summary>
        public virtual void AddResolvedEntry(FilePosition location, FunctionLikeExpression lambda)
        {
            CurrentFileModule?.AddResolvedEntry(location, lambda);
        }