public QualifierValue GetQualifierValue()
        {
            var qualifierTable = new QualifierTable(m_stringTable);
            var qualifierId    = qualifierTable.CreateQualifier(new Tuple <string, string>("hey", "hello"));

            return(QualifierValue.Create(qualifierId, qualifierTable, m_stringTable));
        }
Exemplo n.º 2
0
        private static List <string> ExtractQualifierSpaceValues(IArrayLiteralExpression valueSpace, DiagnosticContext context, bool emitLogEvents)
        {
            var  values    = new List <string>(valueSpace.Elements.Count);
            bool hasErrors = false;

            foreach (var value in valueSpace.Elements)
            {
                if (value.Kind != TypeScript.Net.Types.SyntaxKind.StringLiteral)
                {
                    if (emitLogEvents)
                    {
                        context.Logger.ReportQualifierSpaceValueMustBeStringLiteral(context.LoggingContext, value.LocationForLogging(context.SourceFile));
                    }

                    hasErrors = true;
                }

                var text = value.Cast <IStringLiteral>().Text;
                if (!QualifierTable.IsValidQualifierValue(text))
                {
                    if (emitLogEvents)
                    {
                        context.Logger.ReportQualifierSpaceValueMustBeValidValue(context.LoggingContext, value.LocationForLogging(context.SourceFile), text);
                    }

                    hasErrors = true;
                }

                values.Add(text);
            }

            return(hasErrors ? null : values);
        }
Exemplo n.º 3
0
 /// <nodoc/>
 public TableAgnosticWriter(PathTable pathTable, SymbolTable symbolTable, QualifierTable qualifierTable, bool debug, Stream stream, bool leaveOpen, bool logStats)
     : base(qualifierTable, debug, stream, leaveOpen, logStats)
 {
     m_pathTable   = pathTable;
     m_symbolTable = symbolTable;
     m_stringTable = pathTable.StringTable;
 }
Exemplo n.º 4
0
        /// <summary>
        /// Creates the empty qualifier value.
        /// </summary>
        public static QualifierValue CreateEmpty(QualifierTable qualifierTable)
        {
            Contract.Requires(qualifierTable != null);

            // The empty qualifier value is an empty object literal without location nor path. Since this is a runtime object, and not tied to
            // a particular declaration in a spec, this is ok
            return(new QualifierValue(ObjectLiteral0.SingletonWithoutProvenance, qualifierTable.EmptyQualifierId));
        }
Exemplo n.º 5
0
            public Func <int, QualifierSpaceId> CreateClosure(IResolvedType resolvedType, QualifierTable qualifierTable, ISemanticModel semanticModel)
            {
                m_resolvedType   = resolvedType;
                m_qualifierTable = qualifierTable;
                m_semanticModel  = semanticModel;

                return(m_func);
            }
Exemplo n.º 6
0
        /// <nodoc />
        public V2QualifiersConverter(QualifierTable qualifierTable, ISemanticModel semanticModel)
        {
            Contract.Requires(qualifierTable != null);
            Contract.Requires(semanticModel != null);

            m_qualifierTable = qualifierTable;
            m_semanticModel  = semanticModel;
        }
Exemplo n.º 7
0
        private static QualifierSpaceId CreateQualifierSpaceId(QualifierTable qualifierTable, QualifierSpaceDeclaration qualifierSpaceDeclaration)
        {
            if (qualifierSpaceDeclaration.Count == 0)
            {
                return(qualifierTable.EmptyQualifierSpaceId);
            }

            return(qualifierTable.CreateQualifierSpace(qualifierSpaceDeclaration));
        }
Exemplo n.º 8
0
        /// <summary>
        /// Tries coercing qualifier.
        /// </summary>
        public bool TryCoerce(
            QualifierSpaceId targetQualifierSpaceId,
            QualifierTable qualifierTable,
            QualifierValueCache cache,
            PathTable pathTable,
            StringTable stringTable,
            LoggingContext loggingContext,
            out QualifierValue qualifierValue,
            LineInfo location,
            bool useDefaultsForCoercion,
            AbsolutePath path)
        {
            Contract.Requires(targetQualifierSpaceId.IsValid);
            Contract.Requires(qualifierTable != null);
            Contract.Requires(qualifierTable.IsValidQualifierSpaceId(targetQualifierSpaceId));
            Contract.Requires(pathTable != null);
            Contract.Requires(stringTable != null);
            Contract.Requires(loggingContext != null);
#if DEBUG
            Contract.Ensures(Contract.ValueAtReturn(out qualifierValue) == null || Contract.Result <bool>() == true, "expected 'qualifierValue' to be set to null when return value is 'false'");
            Contract.Ensures(Contract.ValueAtReturn(out qualifierValue) != null || Contract.Result <bool>() == false, "expected 'qualifierValue' to be set to non-null when return value is 'true'");
#endif
            qualifierValue = null;

            if (targetQualifierSpaceId == qualifierTable.EmptyQualifierSpaceId)
            {
                qualifierValue = CreateEmpty(qualifierTable);
                return(true);
            }

            if (qualifierTable.TryCreateQualifierForQualifierSpace(
                    pathTable,
                    loggingContext,
                    QualifierId,
                    targetQualifierSpaceId,
                    useDefaultsForCoercion,
                    out QualifierId resultingQualifierId,
                    out UnsupportedQualifierValue error))
            {
                qualifierValue = Create(resultingQualifierId, cache, qualifierTable, stringTable);
                return(true);
            }

            var errorLocation = LocationData.Create(path, location.Line, location.Position);
            error.Location = errorLocation.ToLogLocation(pathTable);

            Logger.Log.ErrorUnsupportedQualifierValue(
                loggingContext,
                error.Location,
                error.QualifierKey,
                error.InvalidValue,
                error.LegalValues);

            return(false);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Tries coercing qualifier.
        /// </summary>
        public bool TryCoerce(
            QualifierSpaceId targetQualifierSpaceId,
            QualifierTable qualifierTable,
            QualifierValueCache cache,
            PathTable pathTable,
            StringTable stringTable,
            LoggingContext loggingContext,
            out QualifierValue qualifierValue,
            LineInfo location,
            bool useDefaultsForCoercion,
            AbsolutePath path)
        {
            Contract.Requires(targetQualifierSpaceId.IsValid);
            Contract.Requires(qualifierTable != null);
            Contract.Requires(qualifierTable.IsValidQualifierSpaceId(targetQualifierSpaceId));
            Contract.Requires(pathTable != null);
            Contract.Requires(stringTable != null);
            Contract.Requires(loggingContext != null);

            qualifierValue = null;

            if (targetQualifierSpaceId == qualifierTable.EmptyQualifierSpaceId)
            {
                qualifierValue = CreateEmpty(qualifierTable);
                return(true);
            }

            if (qualifierTable.TryCreateQualifierForQualifierSpace(
                    pathTable,
                    loggingContext,
                    QualifierId,
                    targetQualifierSpaceId,
                    useDefaultsForCoercion,
                    out QualifierId resultingQualifierId,
                    out UnsupportedQualifierValue error))
            {
                qualifierValue = Create(resultingQualifierId, cache, qualifierTable, stringTable);
                return(true);
            }

            var errorLocation = LocationData.Create(path, location.Line, location.Position);

            error.Location = errorLocation.ToLogLocation(pathTable);

            Logger.Log.ErrorUnsupportedQualifierValue(
                loggingContext,
                error.Location,
                error.QualifierKey,
                error.InvalidValue,
                error.LegalValues);

            return(false);
        }
Exemplo n.º 10
0
        protected void BaseSetup(bool disablePipSerialization = false)
        {
            Directory.CreateDirectory(SourceRoot);
            Directory.CreateDirectory(ObjectRoot);

            QualifierTable = new QualifierTable(Context.StringTable);

            ReadonlyRoot    = Path.Combine(ObjectRoot, "readonly");
            NonHashableRoot = Path.Combine(ObjectRoot, "nonhashable");
            NonReadableRoot = Path.Combine(ObjectRoot, "nonreadable");

            Directory.CreateDirectory(ReadonlyRoot);
            Directory.CreateDirectory(NonHashableRoot);
            Directory.CreateDirectory(NonReadableRoot);
        }
Exemplo n.º 11
0
        /// <nodoc />
        private FrontEndContext(PathTable pathTable, SymbolTable symbolTable, QualifierTable qualifierTable, LoggingContext loggingContext, IFileSystem fileSystem, CancellationToken cancellationToken)
            : base(cancellationToken, pathTable.StringTable, pathTable, symbolTable, qualifierTable)
        {
            Contract.Requires(pathTable != null);
            Contract.Requires(symbolTable != null);
            Contract.Requires(loggingContext != null);
            Contract.Requires(fileSystem != null);
            Contract.Requires(qualifierTable != null);
            Contract.Requires(pathTable.StringTable == symbolTable.StringTable);
            Contract.Requires(pathTable.StringTable == qualifierTable.StringTable);

            LoggingContext     = loggingContext;
            FileSystem         = fileSystem;
            PipDataBuilderPool = new ObjectPool <PipDataBuilder>(() => new PipDataBuilder(StringTable), builder => builder.Clear());
        }
Exemplo n.º 12
0
        /// <summary>
        /// Creates a qualifier value given a qualifier id.
        /// </summary>
        public static QualifierValue Create(
            QualifierId qualifierId,
            QualifierValueCache cache,
            QualifierTable qualifierTable,
            StringTable stringTable)
        {
            var result = cache.TryGet(qualifierId);

            if (result == null)
            {
                result = Create(qualifierId, qualifierTable, stringTable);
                cache.TryAdd(result);
            }

            return(result);
        }
Exemplo n.º 13
0
 /// <summary>
 /// Constructs a new instance
 /// </summary>
 public BuildXLTestContext(
     StringTable stringTable,
     PathTable pathTable,
     SymbolTable symbolTable,
     QualifierTable qualifierTable,
     TokenTextTable tokenTextTable,
     CancellationToken cancellationToken)
     : base(
         cancellationToken,
         stringTable,
         pathTable,
         symbolTable,
         qualifierTable,
         tokenTextTable)
 {
 }
Exemplo n.º 14
0
 /// <summary>
 /// Context used during schedule execution
 /// </summary>
 public SchedulerContext(
     CancellationToken cancellationToken,
     StringTable stringTable,
     PathTable pathTable,
     SymbolTable symbolTable,
     QualifierTable qualifierTable)
     : base(
         cancellationToken,
         stringTable,
         pathTable,
         symbolTable,
         qualifierTable)
 {
     Contract.Requires(stringTable != null);
     Contract.Requires(pathTable != null);
     Contract.Requires(symbolTable != null);
     Contract.Requires(qualifierTable != null);
 }
Exemplo n.º 15
0
        private EngineState(
            Guid graphId,
            StringTable stringTable,
            PathTable pathTable,
            SymbolTable symbolTable,
            QualifierTable qualifierTable,
            PipTable pipTable,
            PipGraph pipGraph,
            MountPathExpander mountPathExpander,
            SchedulerState schedulerState,
            HistoricTableSizes historicTableSizes,
            FileContentTable fileContentTable)
        {
            Contract.Requires(graphId != default(Guid), "GraphId is not unique enough to be represented in EngineState");
            Contract.Requires(stringTable != null);
            Contract.Requires(pathTable != null);
            Contract.Requires(symbolTable != null);
            Contract.Requires(qualifierTable != null);
            Contract.Requires(stringTable == pathTable.StringTable);
            Contract.Requires(pathTable.StringTable == symbolTable.StringTable);
            Contract.Requires(pathTable.StringTable == qualifierTable.StringTable);
            Contract.Requires(pipTable != null);
            Contract.Requires(!pipTable.IsDisposed);
            Contract.Requires(pipGraph != null);
            Contract.Requires(mountPathExpander != null);
            Contract.Requires(schedulerState != null);
            Contract.Requires(historicTableSizes != null);
            Contract.Requires(fileContentTable != null);

            m_stringTable        = stringTable;
            m_pathTable          = pathTable;
            m_symbolTable        = symbolTable;
            m_qualifierTable     = qualifierTable;
            m_pipTable           = pipTable;
            m_pipGraph           = pipGraph;
            m_mountPathExpander  = mountPathExpander;
            m_schedulerState     = schedulerState;
            m_graphId            = graphId;
            m_historicTableSizes = historicTableSizes;
            m_fileContentTable   = fileContentTable;
        }
Exemplo n.º 16
0
        /// <summary>
        /// Creates a qualifier value given a qualifier id.
        /// </summary>
        public static QualifierValue Create(QualifierId qualifierId, QualifierTable qualifierTable, StringTable stringTable)
        {
            Contract.Requires(qualifierId.IsValid);
            Contract.Requires(qualifierTable != null);
            Contract.Requires(qualifierTable.IsValidQualifierId(qualifierId));

            if (qualifierTable.EmptyQualifierId == qualifierId)
            {
                return(CreateEmpty(qualifierTable));
            }

            Qualifier qualifier = qualifierTable.GetQualifier(qualifierId);
            var       bindings  = new List <Binding>(qualifier.Keys.Count);

            for (int i = 0; i < qualifier.Keys.Count; ++i)
            {
                bindings.Add(new Binding(qualifier.Keys[i], qualifier.Values[i].ToString(stringTable), location: default(LineInfo)));
            }

            return(new QualifierValue(ObjectLiteral.Create(bindings, default(LineInfo), default(AbsolutePath)), qualifierId));
        }