/// <inheritdoc /> public override bool TryProject(Context context, SymbolAtom name, ModuleLiteral origin, out EvaluationResult result, LineInfo location) { if (name == context.ContextTree.CommonConstants.Length) { result = EvaluationResult.Create(Length); return(true); } var resolvedMember = ((ModuleRegistry)context.FrontEndHost.ModuleRegistry).PredefinedTypes.AmbientArray.ResolveMember(this, name); if (resolvedMember == null) { // Array literals could not have arbitrary members. // So if the name was not resolved, reporting an error. // var locationForLogging = LocationForLogging(context, origin); var locationForLogging = UniversalLocation.FromLineInfo(location, origin.Path, context.PathTable); context.Logger.ReportMissingInstanceMember( context.LoggingContext, locationForLogging.AsLoggingLocation(), name.ToDisplayString(context), DisplayStringHelper.TypeToString(GetType(), context), context.GetStackTraceAsString(locationForLogging)); result = EvaluationResult.Error; } else { result = EvaluationResult.Create(resolvedMember); } return(true); }
public void ReportFailResolveSelectorDueToUndefined(ModuleLiteral env, Expression thisExpression, SymbolAtom name, LineInfo lineInfo) { Contract.Requires(env != null); Contract.Requires(name.IsValid); var location = lineInfo.AsUniversalLocation(env, Context); Logger.ReportFailResolveSelectorDueToUndefined( LoggingContext, location.AsLoggingLocation(), name.ToDisplayString(Context), thisExpression.ToDisplayString(Context), Context.GetStackTraceAsErrorMessage(location)); }
/// <nodoc /> public void ReportMissingProperty(ModuleLiteral env, SymbolAtom selector, object receiver, LineInfo lineInfo) { Contract.Requires(env != null); Contract.Requires(receiver != null); var locationForLogging = lineInfo.AsUniversalLocation(env, Context); Logger.ReportMissingInstanceMember( LoggingContext, locationForLogging.AsLoggingLocation(), selector.ToDisplayString(Context), receiver.GetType().ToDisplayString(Context), Context.GetStackTraceAsString(locationForLogging)); }
/// <nodoc /> public void ReportMissingMember(ModuleLiteral env, SymbolAtom name, ModuleLiteral relatedEnv, LineInfo lineInfo) { Contract.Requires(env != null); Contract.Requires(name.IsValid); var relatedLocation = relatedEnv.Location.AsLoggingLocation(relatedEnv, Context).ToDisplayString(); var relatedMessage = env == relatedEnv ? string.Empty : I($", related location '{relatedLocation}'"); var location = lineInfo.AsUniversalLocation(env, Context); Logger.ReportMissingNamespaceMember( LoggingContext, location.AsLoggingLocation(), name.ToDisplayString(Context), relatedMessage, Context.GetStackTraceAsErrorMessage(location)); }