コード例 #1
0
ファイル: CompilerTestBase.cs プロジェクト: rebarlang/rebar
        protected void RunCompilationUpToAutomaticNodeInsertion(DfirRoot dfirRoot, CompileCancellationToken cancellationToken = null)
        {
            cancellationToken = cancellationToken ?? new CompileCancellationToken();
            var lifetimeVariableAssociation = new LifetimeVariableAssociation();

            RunSemanticAnalysisUpToValidation(dfirRoot, cancellationToken, lifetimeVariableAssociation);

            if (DfirMessageHelper.CalculateIsBroken(dfirRoot))
            {
                var messageBuilder = new StringBuilder("Compilation failed because DfirRoot has semantic errors:\n");
                foreach (DfirNodeMessagePair messagePair in DfirMessageHelper.ListAllNodeUserMessages(dfirRoot, false))
                {
                    messageBuilder.AppendLine($"{messagePair.Node}: {messagePair.Message.Descriptor}");
                }
                Assert.Fail(messageBuilder.ToString());
            }

            new AutoBorrowTransform(lifetimeVariableAssociation).Execute(dfirRoot, cancellationToken);
            var nodeInsertionTypeUnificationResultFactory = new NodeInsertionTypeUnificationResultFactory();

            new InsertTerminateLifetimeTransform(lifetimeVariableAssociation, nodeInsertionTypeUnificationResultFactory)
            .Execute(dfirRoot, cancellationToken);
            new InsertDropTransform(lifetimeVariableAssociation, nodeInsertionTypeUnificationResultFactory)
            .Execute(dfirRoot, cancellationToken);
        }
コード例 #2
0
ファイル: CompilerTestBase.cs プロジェクト: rebarlang/rebar
        protected void RunCompilationUpToAsyncNodeDecomposition(DfirRoot dfirRoot, CompileCancellationToken cancellationToken = null)
        {
            cancellationToken = cancellationToken ?? new CompileCancellationToken();
            RunCompilationUpToAutomaticNodeInsertion(dfirRoot, cancellationToken);
            var nodeInsertionTypeUnificationResultFactory = new NodeInsertionTypeUnificationResultFactory();
            var emptyDictionary = new Dictionary <CompilableDefinitionName, bool>();

            new AsyncNodeDecompositionTransform(emptyDictionary, emptyDictionary, nodeInsertionTypeUnificationResultFactory)
            .Execute(dfirRoot, cancellationToken);
        }