Esempio n. 1
0
        public async Task <DafnyDocument> ApplyChangesAsync(DafnyDocument oldDocument, DidChangeTextDocumentParams documentChange, CancellationToken cancellationToken)
        {
            var changeProcessor = new ChangeProcessor(_logger, oldDocument, documentChange.ContentChanges, cancellationToken);
            var mergedItem      = new TextDocumentItem {
                LanguageId = oldDocument.Text.LanguageId,
                Uri        = oldDocument.Uri,
                Version    = documentChange.TextDocument.Version,
                Text       = changeProcessor.MigrateText()
            };
            var loadedDocument = await _documentLoader.LoadAsync(mergedItem, Verify, cancellationToken);

            if (!loadedDocument.SymbolTable.Resolved)
            {
                return(new DafnyDocument(
                           loadedDocument.Text,
                           loadedDocument.Errors,
                           loadedDocument.Program,
                           changeProcessor.MigrateSymbolTable(),
                           // TODO migrate counterexamples?
                           null
                           ));
            }
            return(loadedDocument);
        }