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); }
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); }
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); }
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()); }