Ejemplo n.º 1
0
        public async Task LanguageServiceFindsVariableDefinition()
        {
            GetDefinitionResult definitionResult =
                await this.GetDefinition(
                    FindsVariableDefinition.SourceDetails);

            SymbolReference definition = definitionResult.FoundDefinition;

            Assert.Equal(6, definition.ScriptRegion.StartLineNumber);
            Assert.Equal(1, definition.ScriptRegion.StartColumnNumber);
            Assert.Equal("$things", definition.SymbolName);
        }
Ejemplo n.º 2
0
        public async Task LanguageServiceFindsFunctionDefinitionInDotSourceReference()
        {
            GetDefinitionResult definitionResult =
                await this.GetDefinition(
                    FindsFunctionDefinitionInDotSourceReference.SourceDetails);

            SymbolReference definition = definitionResult.FoundDefinition;

            Assert.True(
                definitionResult.FoundDefinition.FilePath.EndsWith(
                    FindsFunctionDefinition.SourceDetails.File),
                "Unexpected reference file: " + definitionResult.FoundDefinition.FilePath);
            Assert.Equal(1, definition.ScriptRegion.StartLineNumber);
            Assert.Equal(10, definition.ScriptRegion.StartColumnNumber);
            Assert.Equal("My-Function", definition.SymbolName);
        }
Ejemplo n.º 3
0
        public async Task LanguageServiceFindsDotSourcedFile()
        {
            GetDefinitionResult definitionResult =
                await this.GetDefinition(
                    FindsDotSourcedFile.SourceDetails);

            SymbolReference definition = definitionResult.FoundDefinition;

            Assert.True(
                definitionResult.FoundDefinition.FilePath.EndsWith(
                    Path.Combine("References", "ReferenceFileE.ps1")),
                "Unexpected reference file: " + definitionResult.FoundDefinition.FilePath);
            Assert.Equal(1, definition.ScriptRegion.StartLineNumber);
            Assert.Equal(1, definition.ScriptRegion.StartColumnNumber);
            Assert.Equal("./ReferenceFileE.ps1", definition.SymbolName);
        }
Ejemplo n.º 4
0
        protected async Task HandleDefinitionRequest(
            TextDocumentPosition textDocumentPosition,
            EditorSession editorSession,
            RequestContext <Location[], object> requestContext)
        {
            ScriptFile scriptFile =
                editorSession.Workspace.GetFile(
                    textDocumentPosition.Uri);

            SymbolReference foundSymbol =
                editorSession.LanguageService.FindSymbolAtLocation(
                    scriptFile,
                    textDocumentPosition.Position.Line + 1,
                    textDocumentPosition.Position.Character + 1);

            List <Location> definitionLocations = new List <Location>();

            GetDefinitionResult definition = null;

            if (foundSymbol != null)
            {
                definition =
                    await editorSession.LanguageService.GetDefinitionOfSymbol(
                        scriptFile,
                        foundSymbol,
                        editorSession.Workspace);

                if (definition != null)
                {
                    definitionLocations.Add(
                        new Location
                    {
                        Uri   = new Uri(definition.FoundDefinition.FilePath).AbsoluteUri,
                        Range = GetRangeFromScriptRegion(definition.FoundDefinition.ScriptRegion)
                    });
                }
            }

            await requestContext.SendResult(definitionLocations.ToArray());
        }