Version 2.15.0-289.0.dev
Merge commit '41397cbb9ac364fa6d7feea64d569868f770f5a1' into 'dev'
diff --git a/pkg/analysis_server/doc/api.html b/pkg/analysis_server/doc/api.html
index b84e3fd..09adf9a 100644
--- a/pkg/analysis_server/doc/api.html
+++ b/pkg/analysis_server/doc/api.html
@@ -420,7 +420,6 @@
-
<h3>Requests</h3><dl><dt class="request"><a name="request_server.getVersion">server.getVersion</a></dt><dd><div class="box"><pre>request: {
"id": String
"method": "server.getVersion"
@@ -3082,8 +3081,6 @@
-
-
<dl><dt class="typeDefinition"><a name="type_AddContentOverlay">AddContentOverlay: object</a></dt><dd>
<p>
A directive to begin overlaying the contents of a file. The supplied
@@ -5569,7 +5566,7 @@
An enumeration of the services provided by the server domain.
</p>
- <dl><dt class="value">LOG</dt><dt class="value">STATUS</dt></dl></dd><dt class="typeDefinition"><a name="type_SourceChange">SourceChange: object</a></dt><dd>
+ <dl><dt class="value">STATUS</dt></dl></dd><dt class="typeDefinition"><a name="type_SourceChange">SourceChange: object</a></dt><dd>
<p>
A description of a set of edits that implement a single conceptual change.
</p>
@@ -6065,7 +6062,7 @@
TODO: TBD
</p>
<h2 class="domain"><a name="index">Index</a></h2>
-<h3>Domains</h3><h4>server (<a href="#domain_server">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_server.getVersion">getVersion</a></li><li><a href="#request_server.shutdown">shutdown</a></li><li><a href="#request_server.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_server.connected">connected</a></li><li><a href="#notification_server.error">error</a></li><li><a href="#notification_server.log">log</a></li><li><a href="#notification_server.status">status</a></li></ul></div></div><h4>analysis (<a href="#domain_analysis">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_analysis.getErrors">getErrors</a></li><li><a href="#request_analysis.getHover">getHover</a></li><li><a href="#request_analysis.getLibraryDependencies">getLibraryDependencies</a></li><li><a href="#request_analysis.getNavigation">getNavigation</a></li><li><a href="#request_analysis.getReachableSources">getReachableSources</a></li><li><a href="#request_analysis.reanalyze">reanalyze</a></li><li><a href="#request_analysis.setAnalysisRoots">setAnalysisRoots</a></li><li><a href="#request_analysis.setGeneralSubscriptions">setGeneralSubscriptions</a></li><li><a href="#request_analysis.setPriorityFiles">setPriorityFiles</a></li><li><a href="#request_analysis.setSubscriptions">setSubscriptions</a></li><li><a href="#request_analysis.updateContent">updateContent</a></li><li><a href="#request_analysis.updateOptions">updateOptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_analysis.analyzedFiles">analyzedFiles</a></li><li><a href="#notification_analysis.closingLabels">closingLabels</a></li><li><a href="#notification_analysis.errors">errors</a></li><li><a href="#notification_analysis.flushResults">flushResults</a></li><li><a href="#notification_analysis.folding">folding</a></li><li><a href="#notification_analysis.highlights">highlights</a></li><li><a href="#notification_analysis.implemented">implemented</a></li><li><a href="#notification_analysis.invalidate">invalidate</a></li><li><a href="#notification_analysis.navigation">navigation</a></li><li><a href="#notification_analysis.occurrences">occurrences</a></li><li><a href="#notification_analysis.outline">outline</a></li><li><a href="#notification_analysis.overrides">overrides</a></li></ul></div></div><h4>completion (<a href="#domain_completion">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_completion.getSuggestions">getSuggestions</a></li><li><a href="#request_completion.setSubscriptions">setSubscriptions</a></li><li><a href="#request_completion.registerLibraryPaths">registerLibraryPaths</a></li><li><a href="#request_completion.getSuggestionDetails">getSuggestionDetails</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_completion.results">results</a></li><li><a href="#notification_completion.availableSuggestions">availableSuggestions</a></li><li><a href="#notification_completion.existingImports">existingImports</a></li></ul></div></div><h4>search (<a href="#domain_search">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_search.findElementReferences">findElementReferences</a></li><li><a href="#request_search.findMemberDeclarations">findMemberDeclarations</a></li><li><a href="#request_search.findMemberReferences">findMemberReferences</a></li><li><a href="#request_search.findTopLevelDeclarations">findTopLevelDeclarations</a></li><li><a href="#request_search.getTypeHierarchy">getTypeHierarchy</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_search.results">results</a></li></ul></div></div><h4>edit (<a href="#domain_edit">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_edit.format">format</a></li><li><a href="#request_edit.getAssists">getAssists</a></li><li><a href="#request_edit.getAvailableRefactorings">getAvailableRefactorings</a></li><li><a href="#request_edit.getFixes">getFixes</a></li><li><a href="#request_edit.getPostfixCompletion">getPostfixCompletion</a></li><li><a href="#request_edit.getRefactoring">getRefactoring</a></li><li><a href="#request_edit.sortMembers">sortMembers</a></li><li><a href="#request_edit.organizeDirectives">organizeDirectives</a></li></ul></div><h4>execution (<a href="#domain_execution">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_execution.createContext">createContext</a></li><li><a href="#request_execution.deleteContext">deleteContext</a></li><li><a href="#request_execution.getSuggestions">getSuggestions</a></li><li><a href="#request_execution.mapUri">mapUri</a></li><li><a href="#request_execution.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_execution.launchData">launchData</a></li></ul></div></div><h4>diagnostic (<a href="#domain_diagnostic">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_diagnostic.getDiagnostics">getDiagnostics</a></li><li><a href="#request_diagnostic.getServerPort">getServerPort</a></li></ul></div><h4>flutter (<a href="#domain_flutter">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_flutter.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_flutter.outline">outline</a></li></ul></div></div><h3>Types (<a href="#types">↑</a>)</h3><div class="subindex"><ul><li><a href="#type_AddContentOverlay">AddContentOverlay</a></li><li><a href="#type_AnalysisError">AnalysisError</a></li><li><a href="#type_AnalysisErrorFixes">AnalysisErrorFixes</a></li><li><a href="#type_AnalysisErrorSeverity">AnalysisErrorSeverity</a></li><li><a href="#type_AnalysisErrorType">AnalysisErrorType</a></li><li><a href="#type_AnalysisOptions">AnalysisOptions</a></li><li><a href="#type_AnalysisService">AnalysisService</a></li><li><a href="#type_AnalysisStatus">AnalysisStatus</a></li><li><a href="#type_AvailableSuggestion">AvailableSuggestion</a></li><li><a href="#type_AvailableSuggestionRelevanceTag">AvailableSuggestionRelevanceTag</a></li><li><a href="#type_AvailableSuggestionSet">AvailableSuggestionSet</a></li><li><a href="#type_BulkFix">BulkFix</a></li><li><a href="#type_BulkFixDetail">BulkFixDetail</a></li><li><a href="#type_ChangeContentOverlay">ChangeContentOverlay</a></li><li><a href="#type_ClosingLabel">ClosingLabel</a></li><li><a href="#type_CompletionId">CompletionId</a></li><li><a href="#type_CompletionService">CompletionService</a></li><li><a href="#type_CompletionSuggestion">CompletionSuggestion</a></li><li><a href="#type_CompletionSuggestionKind">CompletionSuggestionKind</a></li><li><a href="#type_ContextData">ContextData</a></li><li><a href="#type_DiagnosticMessage">DiagnosticMessage</a></li><li><a href="#type_Element">Element</a></li><li><a href="#type_ElementDeclaration">ElementDeclaration</a></li><li><a href="#type_ElementKind">ElementKind</a></li><li><a href="#type_ExecutableFile">ExecutableFile</a></li><li><a href="#type_ExecutableKind">ExecutableKind</a></li><li><a href="#type_ExecutionContextId">ExecutionContextId</a></li><li><a href="#type_ExecutionService">ExecutionService</a></li><li><a href="#type_ExistingImport">ExistingImport</a></li><li><a href="#type_ExistingImports">ExistingImports</a></li><li><a href="#type_FileKind">FileKind</a></li><li><a href="#type_FilePath">FilePath</a></li><li><a href="#type_FlutterOutline">FlutterOutline</a></li><li><a href="#type_FlutterOutlineAttribute">FlutterOutlineAttribute</a></li><li><a href="#type_FlutterOutlineKind">FlutterOutlineKind</a></li><li><a href="#type_FlutterService">FlutterService</a></li><li><a href="#type_FlutterWidgetProperty">FlutterWidgetProperty</a></li><li><a href="#type_FlutterWidgetPropertyEditor">FlutterWidgetPropertyEditor</a></li><li><a href="#type_FlutterWidgetPropertyEditorKind">FlutterWidgetPropertyEditorKind</a></li><li><a href="#type_FlutterWidgetPropertyValue">FlutterWidgetPropertyValue</a></li><li><a href="#type_FlutterWidgetPropertyValueEnumItem">FlutterWidgetPropertyValueEnumItem</a></li><li><a href="#type_FoldingKind">FoldingKind</a></li><li><a href="#type_FoldingRegion">FoldingRegion</a></li><li><a href="#type_GeneralAnalysisService">GeneralAnalysisService</a></li><li><a href="#type_HighlightRegion">HighlightRegion</a></li><li><a href="#type_HighlightRegionType">HighlightRegionType</a></li><li><a href="#type_HoverInformation">HoverInformation</a></li><li><a href="#type_ImplementedClass">ImplementedClass</a></li><li><a href="#type_ImplementedMember">ImplementedMember</a></li><li><a href="#type_ImportedElementSet">ImportedElementSet</a></li><li><a href="#type_ImportedElements">ImportedElements</a></li><li><a href="#type_IncludedSuggestionRelevanceTag">IncludedSuggestionRelevanceTag</a></li><li><a href="#type_IncludedSuggestionSet">IncludedSuggestionSet</a></li><li><a href="#type_KytheEntry">KytheEntry</a></li><li><a href="#type_KytheVName">KytheVName</a></li><li><a href="#type_LibraryPathSet">LibraryPathSet</a></li><li><a href="#type_LinkedEditGroup">LinkedEditGroup</a></li><li><a href="#type_LinkedEditSuggestion">LinkedEditSuggestion</a></li><li><a href="#type_LinkedEditSuggestionKind">LinkedEditSuggestionKind</a></li><li><a href="#type_Location">Location</a></li><li><a href="#type_NavigationRegion">NavigationRegion</a></li><li><a href="#type_NavigationTarget">NavigationTarget</a></li><li><a href="#type_Occurrences">Occurrences</a></li><li><a href="#type_Outline">Outline</a></li><li><a href="#type_OverriddenMember">OverriddenMember</a></li><li><a href="#type_Override">Override</a></li><li><a href="#type_Position">Position</a></li><li><a href="#type_PostfixTemplateDescriptor">PostfixTemplateDescriptor</a></li><li><a href="#type_PubStatus">PubStatus</a></li><li><a href="#type_RefactoringFeedback">RefactoringFeedback</a></li><li><a href="#type_RefactoringKind">RefactoringKind</a></li><li><a href="#type_RefactoringMethodParameter">RefactoringMethodParameter</a></li><li><a href="#type_RefactoringMethodParameterKind">RefactoringMethodParameterKind</a></li><li><a href="#type_RefactoringOptions">RefactoringOptions</a></li><li><a href="#type_RefactoringProblem">RefactoringProblem</a></li><li><a href="#type_RefactoringProblemSeverity">RefactoringProblemSeverity</a></li><li><a href="#type_RemoveContentOverlay">RemoveContentOverlay</a></li><li><a href="#type_RequestError">RequestError</a></li><li><a href="#type_RequestErrorCode">RequestErrorCode</a></li><li><a href="#type_RuntimeCompletionExpression">RuntimeCompletionExpression</a></li><li><a href="#type_RuntimeCompletionExpressionType">RuntimeCompletionExpressionType</a></li><li><a href="#type_RuntimeCompletionExpressionTypeKind">RuntimeCompletionExpressionTypeKind</a></li><li><a href="#type_RuntimeCompletionVariable">RuntimeCompletionVariable</a></li><li><a href="#type_SearchId">SearchId</a></li><li><a href="#type_SearchResult">SearchResult</a></li><li><a href="#type_SearchResultKind">SearchResultKind</a></li><li><a href="#type_ServerService">ServerService</a></li><li><a href="#type_SourceChange">SourceChange</a></li><li><a href="#type_SourceEdit">SourceEdit</a></li><li><a href="#type_SourceFileEdit">SourceFileEdit</a></li><li><a href="#type_TypeHierarchyItem">TypeHierarchyItem</a></li></ul></div><h3>Refactorings (<a href="#refactorings">↑</a>)</h3><div class="subindex"><ul><li><a href="#refactoring_CONVERT_GETTER_TO_METHOD">CONVERT_GETTER_TO_METHOD</a></li><li><a href="#refactoring_CONVERT_METHOD_TO_GETTER">CONVERT_METHOD_TO_GETTER</a></li><li><a href="#refactoring_EXTRACT_LOCAL_VARIABLE">EXTRACT_LOCAL_VARIABLE</a></li><li><a href="#refactoring_EXTRACT_METHOD">EXTRACT_METHOD</a></li><li><a href="#refactoring_EXTRACT_WIDGET">EXTRACT_WIDGET</a></li><li><a href="#refactoring_INLINE_LOCAL_VARIABLE">INLINE_LOCAL_VARIABLE</a></li><li><a href="#refactoring_INLINE_METHOD">INLINE_METHOD</a></li><li><a href="#refactoring_MOVE_FILE">MOVE_FILE</a></li><li><a href="#refactoring_RENAME">RENAME</a></li></ul></div>
+<h3>Domains</h3><h4>server (<a href="#domain_server">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_server.getVersion">getVersion</a></li><li><a href="#request_server.shutdown">shutdown</a></li><li><a href="#request_server.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_server.connected">connected</a></li><li><a href="#notification_server.error">error</a></li><li><a href="#notification_server.status">status</a></li></ul></div></div><h4>analysis (<a href="#domain_analysis">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_analysis.getErrors">getErrors</a></li><li><a href="#request_analysis.getHover">getHover</a></li><li><a href="#request_analysis.getLibraryDependencies">getLibraryDependencies</a></li><li><a href="#request_analysis.getNavigation">getNavigation</a></li><li><a href="#request_analysis.getReachableSources">getReachableSources</a></li><li><a href="#request_analysis.reanalyze">reanalyze</a></li><li><a href="#request_analysis.setAnalysisRoots">setAnalysisRoots</a></li><li><a href="#request_analysis.setGeneralSubscriptions">setGeneralSubscriptions</a></li><li><a href="#request_analysis.setPriorityFiles">setPriorityFiles</a></li><li><a href="#request_analysis.setSubscriptions">setSubscriptions</a></li><li><a href="#request_analysis.updateContent">updateContent</a></li><li><a href="#request_analysis.updateOptions">updateOptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_analysis.analyzedFiles">analyzedFiles</a></li><li><a href="#notification_analysis.closingLabels">closingLabels</a></li><li><a href="#notification_analysis.errors">errors</a></li><li><a href="#notification_analysis.flushResults">flushResults</a></li><li><a href="#notification_analysis.folding">folding</a></li><li><a href="#notification_analysis.highlights">highlights</a></li><li><a href="#notification_analysis.implemented">implemented</a></li><li><a href="#notification_analysis.invalidate">invalidate</a></li><li><a href="#notification_analysis.navigation">navigation</a></li><li><a href="#notification_analysis.occurrences">occurrences</a></li><li><a href="#notification_analysis.outline">outline</a></li><li><a href="#notification_analysis.overrides">overrides</a></li></ul></div></div><h4>completion (<a href="#domain_completion">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_completion.getSuggestions">getSuggestions</a></li><li><a href="#request_completion.setSubscriptions">setSubscriptions</a></li><li><a href="#request_completion.registerLibraryPaths">registerLibraryPaths</a></li><li><a href="#request_completion.getSuggestionDetails">getSuggestionDetails</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_completion.results">results</a></li><li><a href="#notification_completion.availableSuggestions">availableSuggestions</a></li><li><a href="#notification_completion.existingImports">existingImports</a></li></ul></div></div><h4>search (<a href="#domain_search">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_search.findElementReferences">findElementReferences</a></li><li><a href="#request_search.findMemberDeclarations">findMemberDeclarations</a></li><li><a href="#request_search.findMemberReferences">findMemberReferences</a></li><li><a href="#request_search.findTopLevelDeclarations">findTopLevelDeclarations</a></li><li><a href="#request_search.getTypeHierarchy">getTypeHierarchy</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_search.results">results</a></li></ul></div></div><h4>edit (<a href="#domain_edit">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_edit.format">format</a></li><li><a href="#request_edit.getAssists">getAssists</a></li><li><a href="#request_edit.getAvailableRefactorings">getAvailableRefactorings</a></li><li><a href="#request_edit.getFixes">getFixes</a></li><li><a href="#request_edit.getPostfixCompletion">getPostfixCompletion</a></li><li><a href="#request_edit.getRefactoring">getRefactoring</a></li><li><a href="#request_edit.sortMembers">sortMembers</a></li><li><a href="#request_edit.organizeDirectives">organizeDirectives</a></li></ul></div><h4>execution (<a href="#domain_execution">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_execution.createContext">createContext</a></li><li><a href="#request_execution.deleteContext">deleteContext</a></li><li><a href="#request_execution.getSuggestions">getSuggestions</a></li><li><a href="#request_execution.mapUri">mapUri</a></li><li><a href="#request_execution.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_execution.launchData">launchData</a></li></ul></div></div><h4>diagnostic (<a href="#domain_diagnostic">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_diagnostic.getDiagnostics">getDiagnostics</a></li><li><a href="#request_diagnostic.getServerPort">getServerPort</a></li></ul></div><h4>flutter (<a href="#domain_flutter">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_flutter.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_flutter.outline">outline</a></li></ul></div></div><h3>Types (<a href="#types">↑</a>)</h3><div class="subindex"><ul><li><a href="#type_AddContentOverlay">AddContentOverlay</a></li><li><a href="#type_AnalysisError">AnalysisError</a></li><li><a href="#type_AnalysisErrorFixes">AnalysisErrorFixes</a></li><li><a href="#type_AnalysisErrorSeverity">AnalysisErrorSeverity</a></li><li><a href="#type_AnalysisErrorType">AnalysisErrorType</a></li><li><a href="#type_AnalysisOptions">AnalysisOptions</a></li><li><a href="#type_AnalysisService">AnalysisService</a></li><li><a href="#type_AnalysisStatus">AnalysisStatus</a></li><li><a href="#type_AvailableSuggestion">AvailableSuggestion</a></li><li><a href="#type_AvailableSuggestionRelevanceTag">AvailableSuggestionRelevanceTag</a></li><li><a href="#type_AvailableSuggestionSet">AvailableSuggestionSet</a></li><li><a href="#type_BulkFix">BulkFix</a></li><li><a href="#type_BulkFixDetail">BulkFixDetail</a></li><li><a href="#type_ChangeContentOverlay">ChangeContentOverlay</a></li><li><a href="#type_ClosingLabel">ClosingLabel</a></li><li><a href="#type_CompletionId">CompletionId</a></li><li><a href="#type_CompletionService">CompletionService</a></li><li><a href="#type_CompletionSuggestion">CompletionSuggestion</a></li><li><a href="#type_CompletionSuggestionKind">CompletionSuggestionKind</a></li><li><a href="#type_ContextData">ContextData</a></li><li><a href="#type_DiagnosticMessage">DiagnosticMessage</a></li><li><a href="#type_Element">Element</a></li><li><a href="#type_ElementDeclaration">ElementDeclaration</a></li><li><a href="#type_ElementKind">ElementKind</a></li><li><a href="#type_ExecutableFile">ExecutableFile</a></li><li><a href="#type_ExecutableKind">ExecutableKind</a></li><li><a href="#type_ExecutionContextId">ExecutionContextId</a></li><li><a href="#type_ExecutionService">ExecutionService</a></li><li><a href="#type_ExistingImport">ExistingImport</a></li><li><a href="#type_ExistingImports">ExistingImports</a></li><li><a href="#type_FileKind">FileKind</a></li><li><a href="#type_FilePath">FilePath</a></li><li><a href="#type_FlutterOutline">FlutterOutline</a></li><li><a href="#type_FlutterOutlineAttribute">FlutterOutlineAttribute</a></li><li><a href="#type_FlutterOutlineKind">FlutterOutlineKind</a></li><li><a href="#type_FlutterService">FlutterService</a></li><li><a href="#type_FlutterWidgetProperty">FlutterWidgetProperty</a></li><li><a href="#type_FlutterWidgetPropertyEditor">FlutterWidgetPropertyEditor</a></li><li><a href="#type_FlutterWidgetPropertyEditorKind">FlutterWidgetPropertyEditorKind</a></li><li><a href="#type_FlutterWidgetPropertyValue">FlutterWidgetPropertyValue</a></li><li><a href="#type_FlutterWidgetPropertyValueEnumItem">FlutterWidgetPropertyValueEnumItem</a></li><li><a href="#type_FoldingKind">FoldingKind</a></li><li><a href="#type_FoldingRegion">FoldingRegion</a></li><li><a href="#type_GeneralAnalysisService">GeneralAnalysisService</a></li><li><a href="#type_HighlightRegion">HighlightRegion</a></li><li><a href="#type_HighlightRegionType">HighlightRegionType</a></li><li><a href="#type_HoverInformation">HoverInformation</a></li><li><a href="#type_ImplementedClass">ImplementedClass</a></li><li><a href="#type_ImplementedMember">ImplementedMember</a></li><li><a href="#type_ImportedElementSet">ImportedElementSet</a></li><li><a href="#type_ImportedElements">ImportedElements</a></li><li><a href="#type_IncludedSuggestionRelevanceTag">IncludedSuggestionRelevanceTag</a></li><li><a href="#type_IncludedSuggestionSet">IncludedSuggestionSet</a></li><li><a href="#type_KytheEntry">KytheEntry</a></li><li><a href="#type_KytheVName">KytheVName</a></li><li><a href="#type_LibraryPathSet">LibraryPathSet</a></li><li><a href="#type_LinkedEditGroup">LinkedEditGroup</a></li><li><a href="#type_LinkedEditSuggestion">LinkedEditSuggestion</a></li><li><a href="#type_LinkedEditSuggestionKind">LinkedEditSuggestionKind</a></li><li><a href="#type_Location">Location</a></li><li><a href="#type_NavigationRegion">NavigationRegion</a></li><li><a href="#type_NavigationTarget">NavigationTarget</a></li><li><a href="#type_Occurrences">Occurrences</a></li><li><a href="#type_Outline">Outline</a></li><li><a href="#type_OverriddenMember">OverriddenMember</a></li><li><a href="#type_Override">Override</a></li><li><a href="#type_Position">Position</a></li><li><a href="#type_PostfixTemplateDescriptor">PostfixTemplateDescriptor</a></li><li><a href="#type_PubStatus">PubStatus</a></li><li><a href="#type_RefactoringFeedback">RefactoringFeedback</a></li><li><a href="#type_RefactoringKind">RefactoringKind</a></li><li><a href="#type_RefactoringMethodParameter">RefactoringMethodParameter</a></li><li><a href="#type_RefactoringMethodParameterKind">RefactoringMethodParameterKind</a></li><li><a href="#type_RefactoringOptions">RefactoringOptions</a></li><li><a href="#type_RefactoringProblem">RefactoringProblem</a></li><li><a href="#type_RefactoringProblemSeverity">RefactoringProblemSeverity</a></li><li><a href="#type_RemoveContentOverlay">RemoveContentOverlay</a></li><li><a href="#type_RequestError">RequestError</a></li><li><a href="#type_RequestErrorCode">RequestErrorCode</a></li><li><a href="#type_RuntimeCompletionExpression">RuntimeCompletionExpression</a></li><li><a href="#type_RuntimeCompletionExpressionType">RuntimeCompletionExpressionType</a></li><li><a href="#type_RuntimeCompletionExpressionTypeKind">RuntimeCompletionExpressionTypeKind</a></li><li><a href="#type_RuntimeCompletionVariable">RuntimeCompletionVariable</a></li><li><a href="#type_SearchId">SearchId</a></li><li><a href="#type_SearchResult">SearchResult</a></li><li><a href="#type_SearchResultKind">SearchResultKind</a></li><li><a href="#type_ServerService">ServerService</a></li><li><a href="#type_SourceChange">SourceChange</a></li><li><a href="#type_SourceEdit">SourceEdit</a></li><li><a href="#type_SourceFileEdit">SourceFileEdit</a></li><li><a href="#type_TypeHierarchyItem">TypeHierarchyItem</a></li></ul></div><h3>Refactorings (<a href="#refactorings">↑</a>)</h3><div class="subindex"><ul><li><a href="#refactoring_CONVERT_GETTER_TO_METHOD">CONVERT_GETTER_TO_METHOD</a></li><li><a href="#refactoring_CONVERT_METHOD_TO_GETTER">CONVERT_METHOD_TO_GETTER</a></li><li><a href="#refactoring_EXTRACT_LOCAL_VARIABLE">EXTRACT_LOCAL_VARIABLE</a></li><li><a href="#refactoring_EXTRACT_METHOD">EXTRACT_METHOD</a></li><li><a href="#refactoring_EXTRACT_WIDGET">EXTRACT_WIDGET</a></li><li><a href="#refactoring_INLINE_LOCAL_VARIABLE">INLINE_LOCAL_VARIABLE</a></li><li><a href="#refactoring_INLINE_METHOD">INLINE_METHOD</a></li><li><a href="#refactoring_MOVE_FILE">MOVE_FILE</a></li><li><a href="#refactoring_RENAME">RENAME</a></li></ul></div>
</body></html>
\ No newline at end of file
diff --git a/pkg/analysis_server/lib/protocol/protocol_constants.dart b/pkg/analysis_server/lib/protocol/protocol_constants.dart
index 2689506..fd9998b 100644
--- a/pkg/analysis_server/lib/protocol/protocol_constants.dart
+++ b/pkg/analysis_server/lib/protocol/protocol_constants.dart
@@ -350,8 +350,6 @@
const String SERVER_NOTIFICATION_ERROR_IS_FATAL = 'isFatal';
const String SERVER_NOTIFICATION_ERROR_MESSAGE = 'message';
const String SERVER_NOTIFICATION_ERROR_STACK_TRACE = 'stackTrace';
-const String SERVER_NOTIFICATION_LOG = 'server.log';
-const String SERVER_NOTIFICATION_LOG_ENTRY = 'entry';
const String SERVER_NOTIFICATION_STATUS = 'server.status';
const String SERVER_NOTIFICATION_STATUS_ANALYSIS = 'analysis';
const String SERVER_NOTIFICATION_STATUS_PUB = 'pub';
diff --git a/pkg/analysis_server/lib/protocol/protocol_generated.dart b/pkg/analysis_server/lib/protocol/protocol_generated.dart
index 8cd904d..ac2f847 100644
--- a/pkg/analysis_server/lib/protocol/protocol_generated.dart
+++ b/pkg/analysis_server/lib/protocol/protocol_generated.dart
@@ -15871,249 +15871,18 @@
int get hashCode => version.hashCode;
}
-/// ServerLogEntry
-///
-/// {
-/// "time": int
-/// "kind": ServerLogEntryKind
-/// "data": String
-/// }
-///
-/// Clients may not extend, implement or mix-in this class.
-class ServerLogEntry implements HasToJson {
- /// The time (milliseconds since epoch) at which the server created this log
- /// entry.
- int time;
-
- /// The kind of the entry, used to determine how to interpret the "data"
- /// field.
- ServerLogEntryKind kind;
-
- /// The payload of the entry, the actual format is determined by the "kind"
- /// field.
- String data;
-
- ServerLogEntry(this.time, this.kind, this.data);
-
- factory ServerLogEntry.fromJson(
- JsonDecoder jsonDecoder, String jsonPath, Object? json) {
- json ??= {};
- if (json is Map) {
- int time;
- if (json.containsKey('time')) {
- time = jsonDecoder.decodeInt(jsonPath + '.time', json['time']);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'time');
- }
- ServerLogEntryKind kind;
- if (json.containsKey('kind')) {
- kind = ServerLogEntryKind.fromJson(
- jsonDecoder, jsonPath + '.kind', json['kind']);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'kind');
- }
- String data;
- if (json.containsKey('data')) {
- data = jsonDecoder.decodeString(jsonPath + '.data', json['data']);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'data');
- }
- return ServerLogEntry(time, kind, data);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'ServerLogEntry', json);
- }
- }
-
- @override
- Map<String, Object> toJson() {
- var result = <String, Object>{};
- result['time'] = time;
- result['kind'] = kind.toJson();
- result['data'] = data;
- return result;
- }
-
- @override
- String toString() => json.encode(toJson());
-
- @override
- bool operator ==(other) {
- if (other is ServerLogEntry) {
- return time == other.time && kind == other.kind && data == other.data;
- }
- return false;
- }
-
- @override
- int get hashCode => Object.hash(
- time,
- kind,
- data,
- );
-}
-
-/// ServerLogEntryKind
-///
-/// enum {
-/// NOTIFICATION
-/// RAW
-/// REQUEST
-/// RESPONSE
-/// }
-///
-/// Clients may not extend, implement or mix-in this class.
-class ServerLogEntryKind implements Enum {
- /// A notification from the server, such as "analysis.highlights". The "data"
- /// field contains a JSON object with abbreviated notification.
- static const ServerLogEntryKind NOTIFICATION =
- ServerLogEntryKind._('NOTIFICATION');
-
- /// Arbitrary string, describing some event that happened in the server, e.g.
- /// starting a file analysis, and details which files were accessed. These
- /// entries are not structured, but provide context information about
- /// requests and notification, and can be related by "time" for further
- /// manual analysis.
- static const ServerLogEntryKind RAW = ServerLogEntryKind._('RAW');
-
- /// A request from the client, as the server views it, e.g.
- /// "edit.getAssists". The "data" field contains a JSON object with
- /// abbreviated request.
- static const ServerLogEntryKind REQUEST = ServerLogEntryKind._('REQUEST');
-
- /// Various counters and measurements related to execution of a request. The
- /// "data" field contains a JSON object with following fields:
- ///
- /// - "id" - the id of the request - copied from the request.
- /// - "method" - the method of the request, e.g. "edit.getAssists".
- /// - "clientRequestTime" - the time (milliseconds since epoch) at which the
- /// client made the request - copied from the request.
- /// - "serverRequestTime" - the time (milliseconds since epoch) at which the
- /// server received and decoded the JSON request.
- /// - "responseTime" - the time (milliseconds since epoch) at which the
- /// server created the response to be encoded into JSON and sent to the
- /// client.
- static const ServerLogEntryKind RESPONSE = ServerLogEntryKind._('RESPONSE');
-
- /// A list containing all of the enum values that are defined.
- static const List<ServerLogEntryKind> VALUES = <ServerLogEntryKind>[
- NOTIFICATION,
- RAW,
- REQUEST,
- RESPONSE
- ];
-
- @override
- final String name;
-
- const ServerLogEntryKind._(this.name);
-
- factory ServerLogEntryKind(String name) {
- switch (name) {
- case 'NOTIFICATION':
- return NOTIFICATION;
- case 'RAW':
- return RAW;
- case 'REQUEST':
- return REQUEST;
- case 'RESPONSE':
- return RESPONSE;
- }
- throw Exception('Illegal enum value: $name');
- }
-
- factory ServerLogEntryKind.fromJson(
- JsonDecoder jsonDecoder, String jsonPath, Object? json) {
- if (json is String) {
- try {
- return ServerLogEntryKind(json);
- } catch (_) {
- // Fall through
- }
- }
- throw jsonDecoder.mismatch(jsonPath, 'ServerLogEntryKind', json);
- }
-
- @override
- String toString() => 'ServerLogEntryKind.$name';
-
- String toJson() => name;
-}
-
-/// server.log params
-///
-/// {
-/// "entry": ServerLogEntry
-/// }
-///
-/// Clients may not extend, implement or mix-in this class.
-class ServerLogParams implements HasToJson {
- ServerLogEntry entry;
-
- ServerLogParams(this.entry);
-
- factory ServerLogParams.fromJson(
- JsonDecoder jsonDecoder, String jsonPath, Object? json) {
- json ??= {};
- if (json is Map) {
- ServerLogEntry entry;
- if (json.containsKey('entry')) {
- entry = ServerLogEntry.fromJson(
- jsonDecoder, jsonPath + '.entry', json['entry']);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'entry');
- }
- return ServerLogParams(entry);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'server.log params', json);
- }
- }
-
- factory ServerLogParams.fromNotification(Notification notification) {
- return ServerLogParams.fromJson(
- ResponseDecoder(null), 'params', notification.params);
- }
-
- @override
- Map<String, Object> toJson() {
- var result = <String, Object>{};
- result['entry'] = entry.toJson();
- return result;
- }
-
- Notification toNotification() {
- return Notification('server.log', toJson());
- }
-
- @override
- String toString() => json.encode(toJson());
-
- @override
- bool operator ==(other) {
- if (other is ServerLogParams) {
- return entry == other.entry;
- }
- return false;
- }
-
- @override
- int get hashCode => entry.hashCode;
-}
-
/// ServerService
///
/// enum {
-/// LOG
/// STATUS
/// }
///
/// Clients may not extend, implement or mix-in this class.
class ServerService implements Enum {
- static const ServerService LOG = ServerService._('LOG');
-
static const ServerService STATUS = ServerService._('STATUS');
/// A list containing all of the enum values that are defined.
- static const List<ServerService> VALUES = <ServerService>[LOG, STATUS];
+ static const List<ServerService> VALUES = <ServerService>[STATUS];
@override
final String name;
@@ -16122,8 +15891,6 @@
factory ServerService(String name) {
switch (name) {
- case 'LOG':
- return LOG;
case 'STATUS':
return STATUS;
}
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index 5a3e760..26000c7 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -40,7 +40,6 @@
import 'package:analysis_server/src/server/sdk_configuration.dart';
import 'package:analysis_server/src/services/flutter/widget_descriptions.dart';
import 'package:analysis_server/src/utilities/process.dart';
-import 'package:analysis_server/src/utilities/request_statistics.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/exception/exception.dart';
@@ -131,7 +130,6 @@
InstrumentationService instrumentationService, {
http.Client? httpClient,
ProcessRunner? processRunner,
- RequestStatisticsHelper? requestStatistics,
DiagnosticServer? diagnosticServer,
this.detachableFileSystemManager,
// Disable to avoid using this in unit tests.
@@ -146,7 +144,6 @@
httpClient,
processRunner,
NotificationManager(channel, baseResourceProvider.pathContext),
- requestStatistics: requestStatistics,
enableBazelWatcher: enableBazelWatcher,
) {
var contextManagerCallbacks =
diff --git a/pkg/analysis_server/lib/src/analysis_server_abstract.dart b/pkg/analysis_server/lib/src/analysis_server_abstract.dart
index 9e758b6..7779957 100644
--- a/pkg/analysis_server/lib/src/analysis_server_abstract.dart
+++ b/pkg/analysis_server/lib/src/analysis_server_abstract.dart
@@ -26,8 +26,6 @@
import 'package:analysis_server/src/utilities/file_string_sink.dart';
import 'package:analysis_server/src/utilities/null_string_sink.dart';
import 'package:analysis_server/src/utilities/process.dart';
-import 'package:analysis_server/src/utilities/request_statistics.dart';
-import 'package:analysis_server/src/utilities/tee_string_sink.dart';
import 'package:analyzer/dart/analysis/analysis_context.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/analysis/session.dart';
@@ -127,8 +125,6 @@
/// Performance information before initial analysis is complete.
final ServerPerformance performanceDuringStartup = ServerPerformance();
- RequestStatisticsHelper? requestStatistics;
-
PerformanceLog? analysisPerformanceLogger;
/// The set of the files that are currently priority.
@@ -155,7 +151,6 @@
http.Client? httpClient,
ProcessRunner? processRunner,
this.notificationManager, {
- this.requestStatistics,
bool enableBazelWatcher = false,
}) : resourceProvider = OverlayResourceProvider(baseResourceProvider),
pubApi = PubApi(instrumentationService, httpClient,
@@ -195,10 +190,6 @@
sink = FileStringSink(path);
}
}
- final requestStatistics = this.requestStatistics;
- if (requestStatistics != null) {
- sink = TeeStringSink(sink, requestStatistics.perfLoggerStringSink);
- }
final analysisPerformanceLogger =
this.analysisPerformanceLogger = PerformanceLog(sink);
diff --git a/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart b/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart
index bfbc6ba..869c9b9 100644
--- a/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart
+++ b/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart
@@ -8,7 +8,6 @@
import 'package:analysis_server/protocol/protocol.dart';
import 'package:analysis_server/src/channel/channel.dart';
-import 'package:analysis_server/src/utilities/request_statistics.dart';
import 'package:analyzer/instrumentation/instrumentation.dart';
/// Instances of the class [ByteStreamClientChannel] implement a
@@ -79,9 +78,6 @@
/// The instrumentation service that is to be used by this analysis server.
final InstrumentationService _instrumentationService;
- /// The helper for recording request / response statistics.
- final RequestStatisticsHelper? _requestStatistics;
-
/// Completer that will be signalled when the input stream is closed.
final Completer _closed = Completer();
@@ -89,11 +85,7 @@
bool _closeRequested = false;
ByteStreamServerChannel(
- this._input, this._output, this._instrumentationService,
- {RequestStatisticsHelper? requestStatistics})
- : _requestStatistics = requestStatistics {
- _requestStatistics?.serverChannel = this;
- }
+ this._input, this._output, this._instrumentationService);
/// Future that will be completed when the input stream is closed.
Future get closed {
@@ -129,10 +121,7 @@
}
var jsonEncoding = json.encode(notification.toJson());
_outputLine(jsonEncoding);
- if (!identical(notification.event, 'server.log')) {
- _instrumentationService.logNotification(jsonEncoding);
- _requestStatistics?.logNotification(notification);
- }
+ _instrumentationService.logNotification(jsonEncoding);
}
@override
@@ -142,7 +131,6 @@
if (_closeRequested) {
return;
}
- _requestStatistics?.addResponse(response);
var jsonEncoding = json.encode(response.toJson());
_outputLine(jsonEncoding);
_instrumentationService.logResponse(jsonEncoding);
@@ -172,7 +160,6 @@
sendResponse(Response.invalidRequestFormat());
return;
}
- _requestStatistics?.addRequest(request);
onRequest(request);
}
}
diff --git a/pkg/analysis_server/lib/src/domain_completion.dart b/pkg/analysis_server/lib/src/domain_completion.dart
index 06753db..d44110b 100644
--- a/pkg/analysis_server/lib/src/domain_completion.dart
+++ b/pkg/analysis_server/lib/src/domain_completion.dart
@@ -501,8 +501,6 @@
return;
}
- server.requestStatistics?.addItemTimeNow(request, 'resolvedUnit');
-
if (offset < 0 || offset > resolvedUnit.content.length) {
server.sendResponse(Response.invalidParameter(
request,
diff --git a/pkg/analysis_server/lib/src/domain_server.dart b/pkg/analysis_server/lib/src/domain_server.dart
index 559f3b8..78a3cee 100644
--- a/pkg/analysis_server/lib/src/domain_server.dart
+++ b/pkg/analysis_server/lib/src/domain_server.dart
@@ -49,9 +49,6 @@
server.serverServices =
ServerSetSubscriptionsParams.fromRequest(request).subscriptions.toSet();
- server.requestStatistics?.isNotificationSubscribed =
- server.serverServices.contains(ServerService.LOG);
-
return ServerSetSubscriptionsResult().toResponse(request.id);
}
diff --git a/pkg/analysis_server/lib/src/edit/edit_domain.dart b/pkg/analysis_server/lib/src/edit/edit_domain.dart
index b73448c..9f90b8b 100644
--- a/pkg/analysis_server/lib/src/edit/edit_domain.dart
+++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart
@@ -207,7 +207,6 @@
//
var responses =
await waitForResponses(pluginFutures, requestParameters: requestParams);
- server.requestStatistics?.addItemTimeNow(request, 'pluginResponses');
var converter = ResultConverter();
var pluginChanges = <plugin.PrioritizedSourceChange>[];
for (var response in responses) {
@@ -268,7 +267,6 @@
//
var responses =
await waitForResponses(pluginFutures, requestParameters: requestParams);
- server.requestStatistics?.addItemTimeNow(request, 'pluginResponses');
var converter = ResultConverter();
for (var response in responses) {
var result = plugin.EditGetFixesResult.fromResponse(response);
@@ -593,7 +591,6 @@
Request request, String file, int offset) async {
var errorFixesList = <AnalysisErrorFixes>[];
var result = await server.getResolvedUnit(file);
- server.requestStatistics?.addItemTimeNow(request, 'resolvedUnit');
if (result != null) {
var lineInfo = result.lineInfo;
var requestLine = lineInfo.getLocation(offset).lineNumber;
@@ -644,7 +641,6 @@
}
}
}
- server.requestStatistics?.addItemTimeNow(request, 'computedFixes');
return errorFixesList;
}
@@ -740,7 +736,6 @@
var changes = <SourceChange>[];
var result = await server.getResolvedUnit(file);
- server.requestStatistics?.addItemTimeNow(request, 'resolvedUnit');
if (result != null) {
var context = DartAssistContextImpl(
@@ -770,8 +765,6 @@
'parameters': parametersFile,
});
}
-
- server.requestStatistics?.addItemTimeNow(request, 'computedAssists');
}
return changes;
diff --git a/pkg/analysis_server/lib/src/server/driver.dart b/pkg/analysis_server/lib/src/server/driver.dart
index 5016f76..a44869e 100644
--- a/pkg/analysis_server/lib/src/server/driver.dart
+++ b/pkg/analysis_server/lib/src/server/driver.dart
@@ -24,7 +24,6 @@
import 'package:analysis_server/src/server/sdk_configuration.dart';
import 'package:analysis_server/src/server/stdio_server.dart';
import 'package:analysis_server/src/socket_server.dart';
-import 'package:analysis_server/src/utilities/request_statistics.dart';
import 'package:analysis_server/starter.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/instrumentation/file_instrumentation.dart';
@@ -303,7 +302,6 @@
dartSdkManager,
crashReportingAttachmentsBuilder,
instrumentationService,
- RequestStatisticsHelper(),
analytics,
diagnosticServerPort,
errorNotifier,
@@ -318,7 +316,6 @@
DartSdkManager dartSdkManager,
CrashReportingAttachmentsBuilder crashReportingAttachmentsBuilder,
InstrumentationService instrumentationService,
- RequestStatisticsHelper requestStatistics,
telemetry.Analytics analytics,
int? diagnosticServerPort,
ErrorNotifier errorNotifier,
@@ -353,7 +350,6 @@
dartSdkManager,
crashReportingAttachmentsBuilder,
instrumentationService,
- requestStatistics,
diagnosticServer,
detachableFileSystemManager);
httpServer = HttpAnalysisServer(socketServer);
diff --git a/pkg/analysis_server/lib/src/server/isolate_analysis_server.dart b/pkg/analysis_server/lib/src/server/isolate_analysis_server.dart
index 2ef30d3..882f759 100644
--- a/pkg/analysis_server/lib/src/server/isolate_analysis_server.dart
+++ b/pkg/analysis_server/lib/src/server/isolate_analysis_server.dart
@@ -28,7 +28,6 @@
serverIsolateChannel.stream,
IOSink(serverIsolateChannel.sink),
socketServer.instrumentationService,
- requestStatistics: socketServer.requestStatistics,
);
socketServer.createAnalysisServer(serverChannel);
await serverChannel.closed;
diff --git a/pkg/analysis_server/lib/src/server/stdio_server.dart b/pkg/analysis_server/lib/src/server/stdio_server.dart
index 06c5030..78a036b 100644
--- a/pkg/analysis_server/lib/src/server/stdio_server.dart
+++ b/pkg/analysis_server/lib/src/server/stdio_server.dart
@@ -27,7 +27,6 @@
stdin,
stdout,
socketServer.instrumentationService,
- requestStatistics: socketServer.requestStatistics,
);
socketServer.createAnalysisServer(serverChannel);
return serverChannel.closed;
diff --git a/pkg/analysis_server/lib/src/socket_server.dart b/pkg/analysis_server/lib/src/socket_server.dart
index 59cafe6..5763cfe 100644
--- a/pkg/analysis_server/lib/src/socket_server.dart
+++ b/pkg/analysis_server/lib/src/socket_server.dart
@@ -10,7 +10,6 @@
import 'package:analysis_server/src/server/crash_reporting_attachments.dart';
import 'package:analysis_server/src/server/detachable_filesystem_manager.dart';
import 'package:analysis_server/src/server/diagnostic_server.dart';
-import 'package:analysis_server/src/utilities/request_statistics.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/instrumentation/instrumentation.dart';
import 'package:analyzer/src/generated/sdk.dart';
@@ -36,7 +35,6 @@
final CrashReportingAttachmentsBuilder crashReportingAttachmentsBuilder;
final InstrumentationService instrumentationService;
- final RequestStatisticsHelper? requestStatistics;
@override
final DiagnosticServer? diagnosticServer;
final DetachableFileSystemManager? detachableFileSystemManager;
@@ -51,7 +49,6 @@
this.sdkManager,
this.crashReportingAttachmentsBuilder,
this.instrumentationService,
- this.requestStatistics,
this.diagnosticServer,
this.detachableFileSystemManager);
@@ -78,7 +75,6 @@
sdkManager,
crashReportingAttachmentsBuilder,
instrumentationService,
- requestStatistics: requestStatistics,
diagnosticServer: diagnosticServer,
detachableFileSystemManager: detachableFileSystemManager,
enableBazelWatcher: true,
diff --git a/pkg/analysis_server/lib/src/utilities/request_statistics.dart b/pkg/analysis_server/lib/src/utilities/request_statistics.dart
deleted file mode 100644
index 7cdf234..0000000
--- a/pkg/analysis_server/lib/src/utilities/request_statistics.dart
+++ /dev/null
@@ -1,256 +0,0 @@
-// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:analysis_server/protocol/protocol.dart';
-import 'package:analysis_server/protocol/protocol_generated.dart';
-import 'package:analysis_server/src/channel/byte_stream_channel.dart';
-
-/// Helper for tracking request handling statistics.
-///
-/// All [DateTime] are local, not UTC.
-class RequestStatisticsHelper {
- final String _sdkVersion = Platform.version.split(' ').first;
-
- final Map<String, _RequestStatistics> _statisticsMap = {};
-
- /// The [StringSink] to which performance logger should copy its output.
- late final _ServerLogStringSink _perfLoggerStringSink =
- _ServerLogStringSink(this);
-
- /// The channel to send 'server.log' notifications to.
- ByteStreamServerChannel? _serverChannel;
-
- /// Is `true` if the client subscribed for "server.log" notification.
- bool _isNotificationSubscribed = false;
-
- RequestStatisticsHelper();
-
- /// Set whether the client subscribed for "server.log" notification.
- set isNotificationSubscribed(bool value) {
- _isNotificationSubscribed = value;
- }
-
- /// The [StringSink] to which performance logger should copy its output.
- StringSink get perfLoggerStringSink => _perfLoggerStringSink;
-
- /// The channel sets itself using this method.
- set serverChannel(ByteStreamServerChannel serverChannel) {
- _serverChannel = serverChannel;
- }
-
- /// Add a time marker item to the data associated with the [request].
- void addItemTimeNow(Request request, String name) {
- var id = request.id;
- var stat = _statisticsMap[id];
- if (stat != null) {
- stat.items.add(
- _RequestStatisticsItem(
- name,
- timeValue: DateTime.now(),
- ),
- );
- }
- }
-
- /// The new [request] was received. Record the time when the client sent it,
- /// and the time when the server received it (now).
- void addRequest(Request request) {
- _logRequest(request);
-
- var id = request.id;
-
- var clientRequestMilliseconds = request.clientRequestTime;
- if (clientRequestMilliseconds == null) {
- return;
- }
- var clientRequestTime = DateTime.fromMillisecondsSinceEpoch(
- clientRequestMilliseconds,
- );
-
- var serverRequestTime = DateTime.now();
-
- _statisticsMap[id] = _RequestStatistics(
- id,
- request.method,
- clientRequestTime,
- serverRequestTime,
- );
- }
-
- /// The server finished processing a request, and sends the [response].
- /// Record the time when the response is about to be sent to the client.
- void addResponse(Response response) {
- if (!_isNotificationSubscribed) return;
- if (_serverChannel == null) return;
-
- var id = response.id;
- var stat = _statisticsMap.remove(id);
- if (stat != null) {
- var responseTime = DateTime.now();
- _sendLogEntry(ServerLogEntryKind.RESPONSE, stat.toJson(responseTime));
- }
- }
-
- void logNotification(Notification notification) {
- if (!_isNotificationSubscribed) return;
- if (_serverChannel == null) return;
-
- var event = notification.event;
-
- // Don't log large and often notifications.
- if (event == 'analysis.errors' ||
- event == 'completion.availableSuggestions') {
- return;
- }
-
- var params = notification.params;
- if (params == null) {
- return;
- }
-
- var map = <String, Object>{
- 'event': event,
- };
-
- if (event == 'analysis.highlights' ||
- event == 'analysis.implemented' ||
- event == 'analysis.navigation' ||
- event == 'analysis.outline' ||
- event == 'analysis.overrides') {
- map['file'] = params['file'] as String;
- }
-
- if (event == 'server.status') {
- var analysis = params['analysis'];
- if (analysis is Map<String, Object?>) {
- map['isAnalyzing'] = analysis['isAnalyzing'] as bool;
- }
- }
-
- _sendLogEntry(ServerLogEntryKind.NOTIFICATION, map);
- }
-
- void _logRequest(Request request) {
- if (!_isNotificationSubscribed) return;
- if (_serverChannel == null) return;
-
- var method = request.method;
- var map = <String, Object>{
- 'id': request.id,
- 'method': method,
- };
-
- {
- var clientRequestTime = request.clientRequestTime;
- if (clientRequestTime != null) {
- map['clientRequestTime'] = clientRequestTime;
- }
- }
-
- if (method == 'analysis.updateContent') {
- var filesMap = request.params['files'];
- if (filesMap is Map<String, Object>) {
- map['files'] = filesMap.keys.toList();
- }
- } else {
- map = request.toJson();
- }
-
- _sendLogEntry(ServerLogEntryKind.REQUEST, map);
- }
-
- void _sendLogEntry(ServerLogEntryKind kind, Object data) {
- if (!_isNotificationSubscribed) return;
-
- var serverChannel = _serverChannel;
- if (serverChannel == null) return;
-
- serverChannel.sendNotification(
- Notification(
- 'server.log',
- <String, Object>{
- 'time': DateTime.now().millisecondsSinceEpoch,
- 'kind': kind.toJson(),
- 'data': data,
- 'sdkVersion': _sdkVersion,
- },
- ),
- );
- }
-}
-
-class _RequestStatistics {
- final String id;
- final String method;
- final DateTime clientRequestTime;
- final DateTime serverRequestTime;
- final List<_RequestStatisticsItem> items = [];
-
- _RequestStatistics(
- this.id,
- this.method,
- this.clientRequestTime,
- this.serverRequestTime,
- );
-
- Map<String, Object> toJson(DateTime responseTime) {
- var map = {
- 'id': id,
- 'method': method,
- 'clientRequestTime': clientRequestTime.millisecondsSinceEpoch,
- 'serverRequestTime': serverRequestTime.millisecondsSinceEpoch,
- 'responseTime': responseTime.millisecondsSinceEpoch,
- };
- if (items.isNotEmpty) {
- map['items'] = items.map((item) => item.toJson()).toList();
- }
- return map;
- }
-}
-
-class _RequestStatisticsItem {
- final String name;
- final DateTime? timeValue;
-
- _RequestStatisticsItem(this.name, {this.timeValue});
-
- Map<String, Object> toJson() {
- final timeValue = this.timeValue;
- if (timeValue != null) {
- return {
- 'name': name,
- 'timeValue': timeValue.millisecondsSinceEpoch,
- };
- }
- throw StateError('Unknown value: $name');
- }
-}
-
-class _ServerLogStringSink implements StringSink {
- final RequestStatisticsHelper helper;
-
- _ServerLogStringSink(this.helper);
-
- @override
- void write(Object? obj) {
- throw UnimplementedError();
- }
-
- @override
- void writeAll(Iterable objects, [String separator = '']) {
- throw UnimplementedError();
- }
-
- @override
- void writeCharCode(int charCode) {
- throw UnimplementedError();
- }
-
- @override
- void writeln([Object? obj = '']) {
- helper._sendLogEntry(ServerLogEntryKind.RAW, '$obj');
- }
-}
diff --git a/pkg/analysis_server/lib/src/utilities/tee_string_sink.dart b/pkg/analysis_server/lib/src/utilities/tee_string_sink.dart
deleted file mode 100644
index 2b715c2..0000000
--- a/pkg/analysis_server/lib/src/utilities/tee_string_sink.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// A [StringSink] that writes into two other [StringSink]s.
-class TeeStringSink implements StringSink {
- final StringSink sink1;
- final StringSink sink2;
-
- TeeStringSink(this.sink1, this.sink2);
-
- @override
- void write(Object? obj) {
- sink1.write(obj);
- sink2.write(obj);
- }
-
- @override
- void writeAll(Iterable<dynamic> objects, [String separator = '']) {
- sink1.writeAll(objects, separator);
- sink2.writeAll(objects, separator);
- }
-
- @override
- void writeCharCode(int charCode) {
- sink1.writeCharCode(charCode);
- sink2.writeCharCode(charCode);
- }
-
- @override
- void writeln([Object? obj = '']) {
- sink1.writeln(obj);
- sink2.writeln(obj);
- }
-}
diff --git a/pkg/analysis_server/test/integration/support/integration_test_methods.dart b/pkg/analysis_server/test/integration/support/integration_test_methods.dart
index 9a707cf..b84f147b 100644
--- a/pkg/analysis_server/test/integration/support/integration_test_methods.dart
+++ b/pkg/analysis_server/test/integration/support/integration_test_methods.dart
@@ -112,16 +112,6 @@
/// Stream controller for [onServerError].
late StreamController<ServerErrorParams> _onServerError;
- /// The stream of entries describing events happened in the server.
- ///
- /// Parameters
- ///
- /// entry: ServerLogEntry
- late Stream<ServerLogParams> onServerLog;
-
- /// Stream controller for [onServerLog].
- late StreamController<ServerLogParams> _onServerLog;
-
/// Reports the current status of the server. Parameters are omitted if there
/// has been no change in the status represented by that parameter.
///
@@ -2586,8 +2576,6 @@
onServerConnected = _onServerConnected.stream.asBroadcastStream();
_onServerError = StreamController<ServerErrorParams>(sync: true);
onServerError = _onServerError.stream.asBroadcastStream();
- _onServerLog = StreamController<ServerLogParams>(sync: true);
- onServerLog = _onServerLog.stream.asBroadcastStream();
_onServerStatus = StreamController<ServerStatusParams>(sync: true);
onServerStatus = _onServerStatus.stream.asBroadcastStream();
_onAnalysisAnalyzedFiles =
@@ -2660,10 +2648,6 @@
_onServerError
.add(ServerErrorParams.fromJson(decoder, 'params', params));
break;
- case 'server.log':
- outOfTestExpect(params, isServerLogParams);
- _onServerLog.add(ServerLogParams.fromJson(decoder, 'params', params));
- break;
case 'server.status':
outOfTestExpect(params, isServerStatusParams);
_onServerStatus
diff --git a/pkg/analysis_server/test/integration/support/protocol_matchers.dart b/pkg/analysis_server/test/integration/support/protocol_matchers.dart
index 5fd8c3c..ae6e670 100644
--- a/pkg/analysis_server/test/integration/support/protocol_matchers.dart
+++ b/pkg/analysis_server/test/integration/support/protocol_matchers.dart
@@ -1559,35 +1559,12 @@
'WRITE'
]);
-/// ServerLogEntry
-///
-/// {
-/// "time": int
-/// "kind": ServerLogEntryKind
-/// "data": String
-/// }
-final Matcher isServerLogEntry = LazyMatcher(() => MatchesJsonObject(
- 'ServerLogEntry',
- {'time': isInt, 'kind': isServerLogEntryKind, 'data': isString}));
-
-/// ServerLogEntryKind
-///
-/// enum {
-/// NOTIFICATION
-/// RAW
-/// REQUEST
-/// RESPONSE
-/// }
-final Matcher isServerLogEntryKind = MatchesEnum(
- 'ServerLogEntryKind', ['NOTIFICATION', 'RAW', 'REQUEST', 'RESPONSE']);
-
/// ServerService
///
/// enum {
-/// LOG
/// STATUS
/// }
-final Matcher isServerService = MatchesEnum('ServerService', ['LOG', 'STATUS']);
+final Matcher isServerService = MatchesEnum('ServerService', ['STATUS']);
/// SourceChange
///
@@ -3044,14 +3021,6 @@
final Matcher isServerGetVersionResult = LazyMatcher(
() => MatchesJsonObject('server.getVersion result', {'version': isString}));
-/// server.log params
-///
-/// {
-/// "entry": ServerLogEntry
-/// }
-final Matcher isServerLogParams = LazyMatcher(
- () => MatchesJsonObject('server.log params', {'entry': isServerLogEntry}));
-
/// server.setSubscriptions params
///
/// {
diff --git a/pkg/analysis_server/test/socket_server_test.dart b/pkg/analysis_server/test/socket_server_test.dart
index 1c7bb82..e82b6b8 100644
--- a/pkg/analysis_server/test/socket_server_test.dart
+++ b/pkg/analysis_server/test/socket_server_test.dart
@@ -101,13 +101,13 @@
static SocketServer _createSocketServer(MockServerChannel channel) {
final errorNotifier = ErrorNotifier();
final server = SocketServer(
- AnalysisServerOptions(),
- DartSdkManager(''),
- CrashReportingAttachmentsBuilder.empty,
- errorNotifier,
- null,
- null,
- null);
+ AnalysisServerOptions(),
+ DartSdkManager(''),
+ CrashReportingAttachmentsBuilder.empty,
+ errorNotifier,
+ null,
+ null,
+ );
server.createAnalysisServer(channel);
errorNotifier.server = server.analysisServer;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ServerLogEntry.java b/pkg/analysis_server/tool/spec/generated/java/types/ServerLogEntry.java
deleted file mode 100644
index c590fe5..0000000
--- a/pkg/analysis_server/tool/spec/generated/java/types/ServerLogEntry.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
- * for details. All rights reserved. Use of this source code is governed by a
- * BSD-style license that can be found in the LICENSE file.
- *
- * This file has been automatically generated. Please do not edit it manually.
- * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
- */
-package org.dartlang.analysis.server.protocol;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import com.google.common.collect.Lists;
-import com.google.dart.server.utilities.general.JsonUtilities;
-import com.google.dart.server.utilities.general.ObjectUtilities;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonPrimitive;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.apache.commons.lang3.StringUtils;
-
-/**
- * A log entry from the server.
- *
- * @coverage dart.server.generated.types
- */
-@SuppressWarnings("unused")
-public class ServerLogEntry {
-
- public static final ServerLogEntry[] EMPTY_ARRAY = new ServerLogEntry[0];
-
- public static final List<ServerLogEntry> EMPTY_LIST = Lists.newArrayList();
-
- /**
- * The time (milliseconds since epoch) at which the server created this log entry.
- */
- private final int time;
-
- /**
- * The kind of the entry, used to determine how to interpret the "data" field.
- */
- private final String kind;
-
- /**
- * The payload of the entry, the actual format is determined by the "kind" field.
- */
- private final String data;
-
- /**
- * Constructor for {@link ServerLogEntry}.
- */
- public ServerLogEntry(int time, String kind, String data) {
- this.time = time;
- this.kind = kind;
- this.data = data;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof ServerLogEntry) {
- ServerLogEntry other = (ServerLogEntry) obj;
- return
- other.time == time &&
- ObjectUtilities.equals(other.kind, kind) &&
- ObjectUtilities.equals(other.data, data);
- }
- return false;
- }
-
- public static ServerLogEntry fromJson(JsonObject jsonObject) {
- int time = jsonObject.get("time").getAsInt();
- String kind = jsonObject.get("kind").getAsString();
- String data = jsonObject.get("data").getAsString();
- return new ServerLogEntry(time, kind, data);
- }
-
- public static List<ServerLogEntry> fromJsonArray(JsonArray jsonArray) {
- if (jsonArray == null) {
- return EMPTY_LIST;
- }
- ArrayList<ServerLogEntry> list = new ArrayList<ServerLogEntry>(jsonArray.size());
- Iterator<JsonElement> iterator = jsonArray.iterator();
- while (iterator.hasNext()) {
- list.add(fromJson(iterator.next().getAsJsonObject()));
- }
- return list;
- }
-
- /**
- * The payload of the entry, the actual format is determined by the "kind" field.
- */
- public String getData() {
- return data;
- }
-
- /**
- * The kind of the entry, used to determine how to interpret the "data" field.
- */
- public String getKind() {
- return kind;
- }
-
- /**
- * The time (milliseconds since epoch) at which the server created this log entry.
- */
- public int getTime() {
- return time;
- }
-
- @Override
- public int hashCode() {
- HashCodeBuilder builder = new HashCodeBuilder();
- builder.append(time);
- builder.append(kind);
- builder.append(data);
- return builder.toHashCode();
- }
-
- public JsonObject toJson() {
- JsonObject jsonObject = new JsonObject();
- jsonObject.addProperty("time", time);
- jsonObject.addProperty("kind", kind);
- jsonObject.addProperty("data", data);
- return jsonObject;
- }
-
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder();
- builder.append("[");
- builder.append("time=");
- builder.append(time + ", ");
- builder.append("kind=");
- builder.append(kind + ", ");
- builder.append("data=");
- builder.append(data);
- builder.append("]");
- return builder.toString();
- }
-
-}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ServerLogEntryKind.java b/pkg/analysis_server/tool/spec/generated/java/types/ServerLogEntryKind.java
deleted file mode 100644
index 9964b6f..0000000
--- a/pkg/analysis_server/tool/spec/generated/java/types/ServerLogEntryKind.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
- * for details. All rights reserved. Use of this source code is governed by a
- * BSD-style license that can be found in the LICENSE file.
- *
- * This file has been automatically generated. Please do not edit it manually.
- * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
- */
-package org.dartlang.analysis.server.protocol;
-
-/**
- * An enumeration of the kinds of server long entries.
- *
- * @coverage dart.server.generated.types
- */
-public class ServerLogEntryKind {
-
- /**
- * A notification from the server, such as "analysis.highlights". The "data" field contains a JSON
- * object with abbreviated notification.
- */
- public static final String NOTIFICATION = "NOTIFICATION";
-
- /**
- * Arbitrary string, describing some event that happened in the server, e.g. starting a file
- * analysis, and details which files were accessed. These entries are not structured, but provide
- * context information about requests and notification, and can be related by "time" for further
- * manual analysis.
- */
- public static final String RAW = "RAW";
-
- /**
- * A request from the client, as the server views it, e.g. "edit.getAssists". The "data" field
- * contains a JSON object with abbreviated request.
- */
- public static final String REQUEST = "REQUEST";
-
- /**
- * Various counters and measurements related to execution of a request. The "data" field contains a
- * JSON object with following fields:
- *
- * - "id" - the id of the request - copied from the request.
- * - "method" - the method of the request, e.g. "edit.getAssists".
- * - "clientRequestTime" - the time (milliseconds since epoch) at which the client made the request
- * - copied from the request.
- * - "serverRequestTime" - the time (milliseconds since epoch) at which the server received and
- * decoded the JSON request.
- * - "responseTime" - the time (milliseconds since epoch) at which the server created the response
- * to be encoded into JSON and sent to the client.
- */
- public static final String RESPONSE = "RESPONSE";
-
-}
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ServerService.java b/pkg/analysis_server/tool/spec/generated/java/types/ServerService.java
index 99f51b9..fed7a98 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ServerService.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ServerService.java
@@ -15,8 +15,6 @@
*/
public class ServerService {
- public static final String LOG = "LOG";
-
public static final String STATUS = "STATUS";
}
diff --git a/pkg/analysis_server/tool/spec/spec_input.html b/pkg/analysis_server/tool/spec/spec_input.html
index aa08d74..cbbe829 100644
--- a/pkg/analysis_server/tool/spec/spec_input.html
+++ b/pkg/analysis_server/tool/spec/spec_input.html
@@ -354,16 +354,6 @@
</field>
</params>
</notification>
- <notification event="log" experimental="true">
- <p>
- The stream of entries describing events happened in the server.
- </p>
- <params>
- <field name="entry">
- <ref>ServerLogEntry</ref>
- </field>
- </params>
- </notification>
<notification event="status">
<p>
Reports the current status of the server. Parameters are
@@ -5324,7 +5314,6 @@
An enumeration of the services provided by the server domain.
</p>
<enum>
- <value><code>LOG</code></value>
<value><code>STATUS</code></value>
</enum>
</type>
@@ -5399,94 +5388,6 @@
</field>
</object>
</type>
- <type name="ServerLogEntry" experimental="true">
- <p>
- A log entry from the server.
- </p>
- <object>
- <field name="time">
- <ref>int</ref>
- <p>
- The time (milliseconds since epoch) at which the server created
- this log entry.
- </p>
- </field>
- <field name="kind" >
- <ref>ServerLogEntryKind</ref>
- <p>
- The kind of the entry, used to determine how to interpret the "data"
- field.
- </p>
- </field>
- <field name="data">
- <ref>String</ref>
- <p>
- The payload of the entry, the actual format is determined by the
- "kind" field.
- </p>
- </field>
- </object>
- </type>
- <type name="ServerLogEntryKind" experimental="true">
- <p>
- An enumeration of the kinds of server long entries.
- </p>
- <enum>
- <value>
- <code>NOTIFICATION</code>
- <p>
- A notification from the server, such as "analysis.highlights".
- The "data" field contains a JSON object with abbreviated notification.
- </p>
- </value>
- <value>
- <code>RAW</code>
- <p>
- Arbitrary string, describing some event that happened in the server,
- e.g. starting a file analysis, and details which files were accessed.
- These entries are not structured, but provide context information
- about requests and notification, and can be related by "time" for
- further manual analysis.
- </p>
- </value>
- <value>
- <code>REQUEST</code>
- <p>
- A request from the client, as the server views it, e.g.
- "edit.getAssists". The "data" field contains a JSON object with
- abbreviated request.
- </p>
- </value>
- <value>
- <code>RESPONSE</code>
- <p>
- Various counters and measurements related to execution of a request.
- The "data" field contains a JSON object with following fields:
- </p>
- <ul>
- <li>
- "id" - the id of the request - copied from the request.
- </li>
- <li>
- "method" - the method of the request, e.g. "edit.getAssists".
- </li>
- <li>
- "clientRequestTime" - the time (milliseconds since epoch) at which
- the client made the request - copied from the request.
- </li>
- <li>
- "serverRequestTime" - the time (milliseconds since epoch) at which
- the server received and decoded the JSON request.
- </li>
- <li>
- "responseTime" - the time (milliseconds since epoch) at which the
- server created the response to be encoded into JSON and sent to the
- client.
- </li>
- </ul>
- </value>
- </enum>
- </type>
</types>
<refactorings>
<h2><a name="refactorings">Refactorings</a></h2>
diff --git a/pkg/analysis_server_client/lib/handler/notification_handler.dart b/pkg/analysis_server_client/lib/handler/notification_handler.dart
index 2d8715a..f7ec39c 100644
--- a/pkg/analysis_server_client/lib/handler/notification_handler.dart
+++ b/pkg/analysis_server_client/lib/handler/notification_handler.dart
@@ -99,9 +99,6 @@
case SERVER_NOTIFICATION_ERROR:
onServerError(ServerErrorParams.fromJson(decoder, 'params', params));
break;
- case SERVER_NOTIFICATION_LOG:
- onServerLog(ServerLogParams.fromJson(decoder, 'params', params));
- break;
case SERVER_NOTIFICATION_STATUS:
onServerStatus(ServerStatusParams.fromJson(decoder, 'params', params));
break;
@@ -279,9 +276,6 @@
/// notification.
void onServerError(ServerErrorParams params) {}
- /// The stream of entries describing events happened in the server.
- void onServerLog(ServerLogParams params) {}
-
/// Reports the current status of the server. Parameters are
/// omitted if there has been no change in the status
/// represented by that parameter.
diff --git a/pkg/analysis_server_client/lib/src/protocol/protocol_constants.dart b/pkg/analysis_server_client/lib/src/protocol/protocol_constants.dart
index 2689506..fd9998b 100644
--- a/pkg/analysis_server_client/lib/src/protocol/protocol_constants.dart
+++ b/pkg/analysis_server_client/lib/src/protocol/protocol_constants.dart
@@ -350,8 +350,6 @@
const String SERVER_NOTIFICATION_ERROR_IS_FATAL = 'isFatal';
const String SERVER_NOTIFICATION_ERROR_MESSAGE = 'message';
const String SERVER_NOTIFICATION_ERROR_STACK_TRACE = 'stackTrace';
-const String SERVER_NOTIFICATION_LOG = 'server.log';
-const String SERVER_NOTIFICATION_LOG_ENTRY = 'entry';
const String SERVER_NOTIFICATION_STATUS = 'server.status';
const String SERVER_NOTIFICATION_STATUS_ANALYSIS = 'analysis';
const String SERVER_NOTIFICATION_STATUS_PUB = 'pub';
diff --git a/pkg/analysis_server_client/lib/src/protocol/protocol_generated.dart b/pkg/analysis_server_client/lib/src/protocol/protocol_generated.dart
index 2dcbd32..ad1ed76 100644
--- a/pkg/analysis_server_client/lib/src/protocol/protocol_generated.dart
+++ b/pkg/analysis_server_client/lib/src/protocol/protocol_generated.dart
@@ -15871,249 +15871,18 @@
int get hashCode => version.hashCode;
}
-/// ServerLogEntry
-///
-/// {
-/// "time": int
-/// "kind": ServerLogEntryKind
-/// "data": String
-/// }
-///
-/// Clients may not extend, implement or mix-in this class.
-class ServerLogEntry implements HasToJson {
- /// The time (milliseconds since epoch) at which the server created this log
- /// entry.
- int time;
-
- /// The kind of the entry, used to determine how to interpret the "data"
- /// field.
- ServerLogEntryKind kind;
-
- /// The payload of the entry, the actual format is determined by the "kind"
- /// field.
- String data;
-
- ServerLogEntry(this.time, this.kind, this.data);
-
- factory ServerLogEntry.fromJson(
- JsonDecoder jsonDecoder, String jsonPath, Object? json) {
- json ??= {};
- if (json is Map) {
- int time;
- if (json.containsKey('time')) {
- time = jsonDecoder.decodeInt(jsonPath + '.time', json['time']);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'time');
- }
- ServerLogEntryKind kind;
- if (json.containsKey('kind')) {
- kind = ServerLogEntryKind.fromJson(
- jsonDecoder, jsonPath + '.kind', json['kind']);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'kind');
- }
- String data;
- if (json.containsKey('data')) {
- data = jsonDecoder.decodeString(jsonPath + '.data', json['data']);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'data');
- }
- return ServerLogEntry(time, kind, data);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'ServerLogEntry', json);
- }
- }
-
- @override
- Map<String, Object> toJson() {
- var result = <String, Object>{};
- result['time'] = time;
- result['kind'] = kind.toJson();
- result['data'] = data;
- return result;
- }
-
- @override
- String toString() => json.encode(toJson());
-
- @override
- bool operator ==(other) {
- if (other is ServerLogEntry) {
- return time == other.time && kind == other.kind && data == other.data;
- }
- return false;
- }
-
- @override
- int get hashCode => Object.hash(
- time,
- kind,
- data,
- );
-}
-
-/// ServerLogEntryKind
-///
-/// enum {
-/// NOTIFICATION
-/// RAW
-/// REQUEST
-/// RESPONSE
-/// }
-///
-/// Clients may not extend, implement or mix-in this class.
-class ServerLogEntryKind implements Enum {
- /// A notification from the server, such as "analysis.highlights". The "data"
- /// field contains a JSON object with abbreviated notification.
- static const ServerLogEntryKind NOTIFICATION =
- ServerLogEntryKind._('NOTIFICATION');
-
- /// Arbitrary string, describing some event that happened in the server, e.g.
- /// starting a file analysis, and details which files were accessed. These
- /// entries are not structured, but provide context information about
- /// requests and notification, and can be related by "time" for further
- /// manual analysis.
- static const ServerLogEntryKind RAW = ServerLogEntryKind._('RAW');
-
- /// A request from the client, as the server views it, e.g.
- /// "edit.getAssists". The "data" field contains a JSON object with
- /// abbreviated request.
- static const ServerLogEntryKind REQUEST = ServerLogEntryKind._('REQUEST');
-
- /// Various counters and measurements related to execution of a request. The
- /// "data" field contains a JSON object with following fields:
- ///
- /// - "id" - the id of the request - copied from the request.
- /// - "method" - the method of the request, e.g. "edit.getAssists".
- /// - "clientRequestTime" - the time (milliseconds since epoch) at which the
- /// client made the request - copied from the request.
- /// - "serverRequestTime" - the time (milliseconds since epoch) at which the
- /// server received and decoded the JSON request.
- /// - "responseTime" - the time (milliseconds since epoch) at which the
- /// server created the response to be encoded into JSON and sent to the
- /// client.
- static const ServerLogEntryKind RESPONSE = ServerLogEntryKind._('RESPONSE');
-
- /// A list containing all of the enum values that are defined.
- static const List<ServerLogEntryKind> VALUES = <ServerLogEntryKind>[
- NOTIFICATION,
- RAW,
- REQUEST,
- RESPONSE
- ];
-
- @override
- final String name;
-
- const ServerLogEntryKind._(this.name);
-
- factory ServerLogEntryKind(String name) {
- switch (name) {
- case 'NOTIFICATION':
- return NOTIFICATION;
- case 'RAW':
- return RAW;
- case 'REQUEST':
- return REQUEST;
- case 'RESPONSE':
- return RESPONSE;
- }
- throw Exception('Illegal enum value: $name');
- }
-
- factory ServerLogEntryKind.fromJson(
- JsonDecoder jsonDecoder, String jsonPath, Object? json) {
- if (json is String) {
- try {
- return ServerLogEntryKind(json);
- } catch (_) {
- // Fall through
- }
- }
- throw jsonDecoder.mismatch(jsonPath, 'ServerLogEntryKind', json);
- }
-
- @override
- String toString() => 'ServerLogEntryKind.$name';
-
- String toJson() => name;
-}
-
-/// server.log params
-///
-/// {
-/// "entry": ServerLogEntry
-/// }
-///
-/// Clients may not extend, implement or mix-in this class.
-class ServerLogParams implements HasToJson {
- ServerLogEntry entry;
-
- ServerLogParams(this.entry);
-
- factory ServerLogParams.fromJson(
- JsonDecoder jsonDecoder, String jsonPath, Object? json) {
- json ??= {};
- if (json is Map) {
- ServerLogEntry entry;
- if (json.containsKey('entry')) {
- entry = ServerLogEntry.fromJson(
- jsonDecoder, jsonPath + '.entry', json['entry']);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'entry');
- }
- return ServerLogParams(entry);
- } else {
- throw jsonDecoder.mismatch(jsonPath, 'server.log params', json);
- }
- }
-
- factory ServerLogParams.fromNotification(Notification notification) {
- return ServerLogParams.fromJson(
- ResponseDecoder(null), 'params', notification.params);
- }
-
- @override
- Map<String, Object> toJson() {
- var result = <String, Object>{};
- result['entry'] = entry.toJson();
- return result;
- }
-
- Notification toNotification() {
- return Notification('server.log', toJson());
- }
-
- @override
- String toString() => json.encode(toJson());
-
- @override
- bool operator ==(other) {
- if (other is ServerLogParams) {
- return entry == other.entry;
- }
- return false;
- }
-
- @override
- int get hashCode => entry.hashCode;
-}
-
/// ServerService
///
/// enum {
-/// LOG
/// STATUS
/// }
///
/// Clients may not extend, implement or mix-in this class.
class ServerService implements Enum {
- static const ServerService LOG = ServerService._('LOG');
-
static const ServerService STATUS = ServerService._('STATUS');
/// A list containing all of the enum values that are defined.
- static const List<ServerService> VALUES = <ServerService>[LOG, STATUS];
+ static const List<ServerService> VALUES = <ServerService>[STATUS];
@override
final String name;
@@ -16122,8 +15891,6 @@
factory ServerService(String name) {
switch (name) {
- case 'LOG':
- return LOG;
case 'STATUS':
return STATUS;
}
diff --git a/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart b/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart
index 9f10c18..dc1ec97 100644
--- a/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart
+++ b/pkg/compiler/lib/src/deferred_load/program_split_constraints/nodes.dart
@@ -44,8 +44,7 @@
Uri get uri => _uriAndPrefix.uri;
String get prefix => _uriAndPrefix.prefix;
- ReferenceNode(this._uriAndPrefix, {name})
- : super(name ?? _uriAndPrefix.prefix);
+ ReferenceNode(String name, this._uriAndPrefix) : super(name);
@override
Map<String, dynamic> toJson() {
@@ -60,8 +59,8 @@
if (nodeJson['type'] != 'reference') {
throw 'Unrecognized type for reference node: ${nodeJson['type']}.';
}
- return ReferenceNode(UriAndPrefix.fromJson(nodeJson['import']),
- name: nodeJson['name']);
+ return ReferenceNode(
+ nodeJson['name'], UriAndPrefix.fromJson(nodeJson['import']));
}
@override
@@ -193,9 +192,10 @@
final Map<String, NamedNode> namedNodes = {};
ReferenceNodeNamer _referenceNodeNamer;
- /// The prefix in the 'uri#prefix' string will become a key to reference this
- /// node in other builder calls.
- String _prefixNamer(UriAndPrefix uriAndPrefix) => uriAndPrefix.prefix;
+ /// 'uri#prefix' will become a key to reference this node in other builder
+ /// calls.
+ String _uriAndPrefixNamer(UriAndPrefix uriAndPrefix) =>
+ uriAndPrefix.toString();
/// Override the default reference node namer.
set referenceNodeNamer(ReferenceNodeNamer namer) =>
@@ -203,7 +203,16 @@
/// Returns the [ReferenceNodeNamer] to use for naming.
ReferenceNodeNamer get referenceNodeNamer =>
- _referenceNodeNamer ?? _prefixNamer;
+ _referenceNodeNamer ?? _uriAndPrefixNamer;
+
+ NamedNode _addNamedNode(NamedNode node) {
+ if (namedNodes.containsKey(node.name)) {
+ throw 'Node with name ${node.name} already exists: '
+ '${namedNodes[node.name]}';
+ }
+ namedNodes[node.name] = node;
+ return node;
+ }
/// Returns a [ReferenceNode] referencing [importUriAndPrefix].
/// [ReferenceNode]s are typically created in bulk, by mapping over a list of
@@ -212,10 +221,8 @@
/// [referenceNodeNamer] per [ReferenceNode].
ReferenceNode referenceNode(String importUriAndPrefix) {
var uriAndPrefix = UriAndPrefix.fromJson(importUriAndPrefix);
- var referenceNode = ReferenceNode(uriAndPrefix);
var name = referenceNodeNamer(uriAndPrefix);
- namedNodes[name] = referenceNode;
- return referenceNode;
+ return _addNamedNode(ReferenceNode(name, uriAndPrefix));
}
/// Creates an unnamed [RelativeOrderNode] referencing two [NamedNode]s.
@@ -226,29 +233,37 @@
/// Creates a [CombinerNode] which can be referenced by [name] in further
/// calls to the builder.
- CombinerNode combinerNode(
- String name, List<String> nodes, CombinerType type) {
- var combinerNode = CombinerNode(name, type,
- nodes.map((name) => namedNodes[name] as ReferenceNode).toSet());
- namedNodes[name] = combinerNode;
- return combinerNode;
+ CombinerNode combinerNode(String name, Set<String> nodes, CombinerType type) {
+ ReferenceNode _lookup(String nodeName) {
+ if (!namedNodes.containsKey(nodeName)) {
+ throw 'Missing reference node for $nodeName';
+ }
+ var node = namedNodes[nodeName];
+ if (node is! ReferenceNode) {
+ // TODO(joshualitt): Implement nested combiners.
+ throw '$name references node $nodeName which is not a ReferenceNode.';
+ }
+ return node as ReferenceNode;
+ }
+
+ return _addNamedNode(CombinerNode(name, type, nodes.map(_lookup).toSet()));
}
/// Creates an 'and' [CombinerNode] which can be referenced by [name] in
/// further calls to the builder.
- CombinerNode andNode(String name, List<String> nodes) {
+ CombinerNode andNode(String name, Set<String> nodes) {
return combinerNode(name, nodes, CombinerType.and);
}
/// Creates a 'fuse' [CombinerNode] which can be referenced by [name] in
/// further calls to the builder.
- CombinerNode fuseNode(String name, List<String> nodes) {
+ CombinerNode fuseNode(String name, Set<String> nodes) {
return combinerNode(name, nodes, CombinerType.fuse);
}
/// Creates an 'or' [CombinerNode] which can be referenced by [name] in
/// further calls to the builder.
- CombinerNode orNode(String name, List<String> nodes) {
+ CombinerNode orNode(String name, Set<String> nodes) {
return combinerNode(name, nodes, CombinerType.or);
}
}
diff --git a/pkg/compiler/test/custom_split/custom_split_test.dart b/pkg/compiler/test/custom_split/custom_split_test.dart
index fb0968a..f1e4fd4 100644
--- a/pkg/compiler/test/custom_split/custom_split_test.dart
+++ b/pkg/compiler/test/custom_split/custom_split_test.dart
@@ -83,17 +83,30 @@
return json;
}
+Uri getFileInTestFolder(String test, String file) =>
+ Platform.script.resolve('data/$test/$file');
+
+Future<String> compileConstraintsToJson(String test, Compiler compiler) async {
+ var constraints = getFileInTestFolder(test, 'constraints.dart');
+ var component = compiler.componentForTesting;
+ return constraintsToJson(component, constraints);
+}
+
+File getConstraintsJsonFile(String test) {
+ var constraintsJsonUri = getFileInTestFolder(test, 'constraints.json');
+ return File(constraintsJsonUri.toFilePath());
+}
+
/// Verifies the programmatic API produces the expected JSON.
Future<void> verifyCompiler(String test, Compiler compiler) async {
- var constraints = Platform.script.resolve('data/$test/constraints.dart');
- var constraintsJsonUri =
- Platform.script.resolve('data/$test/constraints.json');
- var component = compiler.componentForTesting;
- var json = await constraintsToJson(component, constraints);
- var constraintsJson =
- File(constraintsJsonUri.toFilePath()).readAsStringSync();
- constraintsJson = constraintsJson.substring(0, constraintsJson.length - 1);
- Expect.equals(json, constraintsJson);
+ var json = await compileConstraintsToJson(test, compiler);
+ Expect.equals(getConstraintsJsonFile(test).readAsStringSync(), json);
+}
+
+/// Generates constraint JSON.
+Future<void> generateJSON(String test, Compiler compiler) async {
+ var json = await compileConstraintsToJson(test, compiler);
+ getConstraintsJsonFile(test).writeAsStringSync(json);
}
/// Compute the [OutputUnit]s for all source files involved in the test, and
@@ -102,6 +115,7 @@
/// or all supporting libraries to be in the `libs` folder, starting with the
/// same name as the original file in `data`.
main(List<String> args) {
+ bool generateGoldens = args.contains('-g');
asyncTest(() async {
Directory dataDir = Directory.fromUri(Platform.script.resolve('data'));
await checkTests(dataDir, const OutputUnitDataComputer(),
@@ -109,6 +123,8 @@
perTestOptions: createPerTestOptions(),
args: args, setUpFunction: () {
importPrefixes.clear();
- }, testedConfigs: allSpecConfigs, verifyCompiler: verifyCompiler);
+ },
+ testedConfigs: allSpecConfigs,
+ verifyCompiler: generateGoldens ? generateJSON : verifyCompiler);
});
}
diff --git a/pkg/compiler/test/custom_split/data/diamond/constraints.dart b/pkg/compiler/test/custom_split/data/diamond/constraints.dart
index 92a7665..88ccb84 100644
--- a/pkg/compiler/test/custom_split/data/diamond/constraints.dart
+++ b/pkg/compiler/test/custom_split/data/diamond/constraints.dart
@@ -12,12 +12,16 @@
}
List<Node> processDeferredImports(List<String> imports) {
+ var step1 = 'memory:sdk/tests/web/native/main.dart#step1';
+ var step2a = 'memory:sdk/tests/web/native/main.dart#step2a';
+ var step2b = 'memory:sdk/tests/web/native/main.dart#step2b';
+ var step3 = 'memory:sdk/tests/web/native/main.dart#step3';
var builder = ProgramSplitBuilder();
return [
...imports.map(builder.referenceNode),
- builder.orderNode('step1', 'step2a'),
- builder.orderNode('step1', 'step2b'),
- builder.orderNode('step2a', 'step3'),
- builder.orderNode('step2b', 'step3'),
+ builder.orderNode(step1, step2a),
+ builder.orderNode(step1, step2b),
+ builder.orderNode(step2a, step3),
+ builder.orderNode(step2b, step3),
];
}
diff --git a/pkg/compiler/test/custom_split/data/diamond/constraints.json b/pkg/compiler/test/custom_split/data/diamond/constraints.json
index 83dfe0a..21b8afa 100644
--- a/pkg/compiler/test/custom_split/data/diamond/constraints.json
+++ b/pkg/compiler/test/custom_split/data/diamond/constraints.json
@@ -1,42 +1,42 @@
[
{
"type": "reference",
- "name": "step1",
+ "name": "memory:sdk/tests/web/native/main.dart#step1",
"import": "memory:sdk/tests/web/native/main.dart#step1"
},
{
"type": "reference",
- "name": "step2a",
+ "name": "memory:sdk/tests/web/native/main.dart#step2a",
"import": "memory:sdk/tests/web/native/main.dart#step2a"
},
{
"type": "reference",
- "name": "step2b",
+ "name": "memory:sdk/tests/web/native/main.dart#step2b",
"import": "memory:sdk/tests/web/native/main.dart#step2b"
},
{
"type": "reference",
- "name": "step3",
+ "name": "memory:sdk/tests/web/native/main.dart#step3",
"import": "memory:sdk/tests/web/native/main.dart#step3"
},
{
"type": "order",
- "predecessor": "step1",
- "successor": "step2a"
+ "predecessor": "memory:sdk/tests/web/native/main.dart#step1",
+ "successor": "memory:sdk/tests/web/native/main.dart#step2a"
},
{
"type": "order",
- "predecessor": "step1",
- "successor": "step2b"
+ "predecessor": "memory:sdk/tests/web/native/main.dart#step1",
+ "successor": "memory:sdk/tests/web/native/main.dart#step2b"
},
{
"type": "order",
- "predecessor": "step2a",
- "successor": "step3"
+ "predecessor": "memory:sdk/tests/web/native/main.dart#step2a",
+ "successor": "memory:sdk/tests/web/native/main.dart#step3"
},
{
"type": "order",
- "predecessor": "step2b",
- "successor": "step3"
+ "predecessor": "memory:sdk/tests/web/native/main.dart#step2b",
+ "successor": "memory:sdk/tests/web/native/main.dart#step3"
}
-]
+]
\ No newline at end of file
diff --git a/pkg/compiler/test/custom_split/data/diamond_and/constraints.dart b/pkg/compiler/test/custom_split/data/diamond_and/constraints.dart
index b3a40ca..a333016 100644
--- a/pkg/compiler/test/custom_split/data/diamond_and/constraints.dart
+++ b/pkg/compiler/test/custom_split/data/diamond_and/constraints.dart
@@ -12,11 +12,15 @@
}
List<Node> processDeferredImports(List<String> imports) {
+ var step1 = 'memory:sdk/tests/web/native/main.dart#step1';
+ var step2a = 'memory:sdk/tests/web/native/main.dart#step2a';
+ var step2b = 'memory:sdk/tests/web/native/main.dart#step2b';
+ var step3 = 'memory:sdk/tests/web/native/main.dart#step3';
var builder = ProgramSplitBuilder();
return [
...imports.map(builder.referenceNode),
- builder.andNode('step2', ['step2a', 'step2b']),
- builder.orderNode('step1', 'step2'),
- builder.orderNode('step2', 'step3'),
+ builder.andNode('step2', {step2a, step2b}),
+ builder.orderNode(step1, 'step2'),
+ builder.orderNode('step2', step3),
];
}
diff --git a/pkg/compiler/test/custom_split/data/diamond_and/constraints.json b/pkg/compiler/test/custom_split/data/diamond_and/constraints.json
index 931a910..85344e7 100644
--- a/pkg/compiler/test/custom_split/data/diamond_and/constraints.json
+++ b/pkg/compiler/test/custom_split/data/diamond_and/constraints.json
@@ -1,40 +1,40 @@
[
{
"type": "reference",
- "name": "step1",
+ "name": "memory:sdk/tests/web/native/main.dart#step1",
"import": "memory:sdk/tests/web/native/main.dart#step1"
},
{
"type": "reference",
- "name": "step2a",
+ "name": "memory:sdk/tests/web/native/main.dart#step2a",
"import": "memory:sdk/tests/web/native/main.dart#step2a"
},
{
"type": "reference",
- "name": "step2b",
+ "name": "memory:sdk/tests/web/native/main.dart#step2b",
"import": "memory:sdk/tests/web/native/main.dart#step2b"
},
{
"type": "reference",
- "name": "step3",
+ "name": "memory:sdk/tests/web/native/main.dart#step3",
"import": "memory:sdk/tests/web/native/main.dart#step3"
},
{
"type": "and",
"name": "step2",
"nodes": [
- "step2a",
- "step2b"
+ "memory:sdk/tests/web/native/main.dart#step2a",
+ "memory:sdk/tests/web/native/main.dart#step2b"
]
},
{
"type": "order",
- "predecessor": "step1",
+ "predecessor": "memory:sdk/tests/web/native/main.dart#step1",
"successor": "step2"
},
{
"type": "order",
"predecessor": "step2",
- "successor": "step3"
+ "successor": "memory:sdk/tests/web/native/main.dart#step3"
}
-]
+]
\ No newline at end of file
diff --git a/pkg/compiler/test/custom_split/data/diamond_fuse/constraints.dart b/pkg/compiler/test/custom_split/data/diamond_fuse/constraints.dart
index 6fdf62e..145cbd1 100644
--- a/pkg/compiler/test/custom_split/data/diamond_fuse/constraints.dart
+++ b/pkg/compiler/test/custom_split/data/diamond_fuse/constraints.dart
@@ -12,11 +12,15 @@
}
List<Node> processDeferredImports(List<String> imports) {
+ var step1 = 'memory:sdk/tests/web/native/main.dart#step1';
+ var step2a = 'memory:sdk/tests/web/native/main.dart#step2a';
+ var step2b = 'memory:sdk/tests/web/native/main.dart#step2b';
+ var step3 = 'memory:sdk/tests/web/native/main.dart#step3';
var builder = ProgramSplitBuilder();
return [
...imports.map(builder.referenceNode),
- builder.fuseNode('step2', ['step2a', 'step2b']),
- builder.orderNode('step1', 'step2'),
- builder.orderNode('step2', 'step3'),
+ builder.fuseNode('step2', {step2a, step2b}),
+ builder.orderNode(step1, 'step2'),
+ builder.orderNode('step2', step3),
];
}
diff --git a/pkg/compiler/test/custom_split/data/diamond_fuse/constraints.json b/pkg/compiler/test/custom_split/data/diamond_fuse/constraints.json
index f170d18..dccfe20 100644
--- a/pkg/compiler/test/custom_split/data/diamond_fuse/constraints.json
+++ b/pkg/compiler/test/custom_split/data/diamond_fuse/constraints.json
@@ -1,40 +1,40 @@
[
{
"type": "reference",
- "name": "step1",
+ "name": "memory:sdk/tests/web/native/main.dart#step1",
"import": "memory:sdk/tests/web/native/main.dart#step1"
},
{
"type": "reference",
- "name": "step2a",
+ "name": "memory:sdk/tests/web/native/main.dart#step2a",
"import": "memory:sdk/tests/web/native/main.dart#step2a"
},
{
"type": "reference",
- "name": "step2b",
+ "name": "memory:sdk/tests/web/native/main.dart#step2b",
"import": "memory:sdk/tests/web/native/main.dart#step2b"
},
{
"type": "reference",
- "name": "step3",
+ "name": "memory:sdk/tests/web/native/main.dart#step3",
"import": "memory:sdk/tests/web/native/main.dart#step3"
},
{
"type": "fuse",
"name": "step2",
"nodes": [
- "step2a",
- "step2b"
+ "memory:sdk/tests/web/native/main.dart#step2a",
+ "memory:sdk/tests/web/native/main.dart#step2b"
]
},
{
"type": "order",
- "predecessor": "step1",
+ "predecessor": "memory:sdk/tests/web/native/main.dart#step1",
"successor": "step2"
},
{
"type": "order",
"predecessor": "step2",
- "successor": "step3"
+ "successor": "memory:sdk/tests/web/native/main.dart#step3"
}
-]
+]
\ No newline at end of file
diff --git a/pkg/compiler/test/custom_split/data/diamond_or/constraints.dart b/pkg/compiler/test/custom_split/data/diamond_or/constraints.dart
index 659bf73..bdc5e1f 100644
--- a/pkg/compiler/test/custom_split/data/diamond_or/constraints.dart
+++ b/pkg/compiler/test/custom_split/data/diamond_or/constraints.dart
@@ -12,11 +12,15 @@
}
List<Node> processDeferredImports(List<String> imports) {
+ var step1 = 'memory:sdk/tests/web/native/main.dart#step1';
+ var step2a = 'memory:sdk/tests/web/native/main.dart#step2a';
+ var step2b = 'memory:sdk/tests/web/native/main.dart#step2b';
+ var step3 = 'memory:sdk/tests/web/native/main.dart#step3';
var builder = ProgramSplitBuilder();
return [
...imports.map(builder.referenceNode),
- builder.orNode('step2', ['step2a', 'step2b']),
- builder.orderNode('step1', 'step2'),
- builder.orderNode('step2', 'step3'),
+ builder.orNode('step2', {step2a, step2b}),
+ builder.orderNode(step1, 'step2'),
+ builder.orderNode('step2', step3),
];
}
diff --git a/pkg/compiler/test/custom_split/data/diamond_or/constraints.json b/pkg/compiler/test/custom_split/data/diamond_or/constraints.json
index 5fcc300..c4091f4 100644
--- a/pkg/compiler/test/custom_split/data/diamond_or/constraints.json
+++ b/pkg/compiler/test/custom_split/data/diamond_or/constraints.json
@@ -1,40 +1,40 @@
[
{
"type": "reference",
- "name": "step1",
+ "name": "memory:sdk/tests/web/native/main.dart#step1",
"import": "memory:sdk/tests/web/native/main.dart#step1"
},
{
"type": "reference",
- "name": "step2a",
+ "name": "memory:sdk/tests/web/native/main.dart#step2a",
"import": "memory:sdk/tests/web/native/main.dart#step2a"
},
{
"type": "reference",
- "name": "step2b",
+ "name": "memory:sdk/tests/web/native/main.dart#step2b",
"import": "memory:sdk/tests/web/native/main.dart#step2b"
},
{
"type": "reference",
- "name": "step3",
+ "name": "memory:sdk/tests/web/native/main.dart#step3",
"import": "memory:sdk/tests/web/native/main.dart#step3"
},
{
"type": "or",
"name": "step2",
"nodes": [
- "step2a",
- "step2b"
+ "memory:sdk/tests/web/native/main.dart#step2a",
+ "memory:sdk/tests/web/native/main.dart#step2b"
]
},
{
"type": "order",
- "predecessor": "step1",
+ "predecessor": "memory:sdk/tests/web/native/main.dart#step1",
"successor": "step2"
},
{
"type": "order",
"predecessor": "step2",
- "successor": "step3"
+ "successor": "memory:sdk/tests/web/native/main.dart#step3"
}
-]
+]
\ No newline at end of file
diff --git a/pkg/compiler/test/custom_split/data/two_branch/constraints.dart b/pkg/compiler/test/custom_split/data/two_branch/constraints.dart
index 1e6ad05..27a00ab 100644
--- a/pkg/compiler/test/custom_split/data/two_branch/constraints.dart
+++ b/pkg/compiler/test/custom_split/data/two_branch/constraints.dart
@@ -12,10 +12,13 @@
}
List<Node> processDeferredImports(List<String> imports) {
+ var step1 = 'memory:sdk/tests/web/native/main.dart#step1';
+ var step2a = 'memory:sdk/tests/web/native/main.dart#step2a';
+ var step2b = 'memory:sdk/tests/web/native/main.dart#step2b';
var builder = ProgramSplitBuilder();
return [
...imports.map(builder.referenceNode),
- builder.orderNode('step1', 'step2a'),
- builder.orderNode('step1', 'step2b'),
+ builder.orderNode(step1, step2a),
+ builder.orderNode(step1, step2b),
];
}
diff --git a/pkg/compiler/test/custom_split/data/two_branch/constraints.json b/pkg/compiler/test/custom_split/data/two_branch/constraints.json
index 8b86071..1a29d7b 100644
--- a/pkg/compiler/test/custom_split/data/two_branch/constraints.json
+++ b/pkg/compiler/test/custom_split/data/two_branch/constraints.json
@@ -1,27 +1,27 @@
[
{
"type": "reference",
- "name": "step1",
+ "name": "memory:sdk/tests/web/native/main.dart#step1",
"import": "memory:sdk/tests/web/native/main.dart#step1"
},
{
"type": "reference",
- "name": "step2a",
+ "name": "memory:sdk/tests/web/native/main.dart#step2a",
"import": "memory:sdk/tests/web/native/main.dart#step2a"
},
{
"type": "reference",
- "name": "step2b",
+ "name": "memory:sdk/tests/web/native/main.dart#step2b",
"import": "memory:sdk/tests/web/native/main.dart#step2b"
},
{
"type": "order",
- "predecessor": "step1",
- "successor": "step2a"
+ "predecessor": "memory:sdk/tests/web/native/main.dart#step1",
+ "successor": "memory:sdk/tests/web/native/main.dart#step2a"
},
{
"type": "order",
- "predecessor": "step1",
- "successor": "step2b"
+ "predecessor": "memory:sdk/tests/web/native/main.dart#step1",
+ "successor": "memory:sdk/tests/web/native/main.dart#step2b"
}
-]
+]
\ No newline at end of file
diff --git a/pkg/compiler/test/custom_split/data/two_step/constraints.dart b/pkg/compiler/test/custom_split/data/two_step/constraints.dart
index 9089c5c..fe0d8a5 100644
--- a/pkg/compiler/test/custom_split/data/two_step/constraints.dart
+++ b/pkg/compiler/test/custom_split/data/two_step/constraints.dart
@@ -12,10 +12,13 @@
}
List<Node> processDeferredImports(List<String> imports) {
+ var step1 = 'memory:sdk/tests/web/native/main.dart#step1';
+ var step2 = 'memory:sdk/tests/web/native/main.dart#step2';
+ var step3 = 'memory:sdk/tests/web/native/main.dart#step3';
var builder = ProgramSplitBuilder();
return [
...imports.map(builder.referenceNode),
- builder.orderNode('step1', 'step2'),
- builder.orderNode('step2', 'step3'),
+ builder.orderNode(step1, step2),
+ builder.orderNode(step2, step3),
];
}
diff --git a/pkg/compiler/test/custom_split/data/two_step/constraints.json b/pkg/compiler/test/custom_split/data/two_step/constraints.json
index b72db44..77a02de 100644
--- a/pkg/compiler/test/custom_split/data/two_step/constraints.json
+++ b/pkg/compiler/test/custom_split/data/two_step/constraints.json
@@ -1,27 +1,27 @@
[
{
"type": "reference",
- "name": "step1",
+ "name": "memory:sdk/tests/web/native/main.dart#step1",
"import": "memory:sdk/tests/web/native/main.dart#step1"
},
{
"type": "reference",
- "name": "step2",
+ "name": "memory:sdk/tests/web/native/main.dart#step2",
"import": "memory:sdk/tests/web/native/main.dart#step2"
},
{
"type": "reference",
- "name": "step3",
+ "name": "memory:sdk/tests/web/native/main.dart#step3",
"import": "memory:sdk/tests/web/native/main.dart#step3"
},
{
"type": "order",
- "predecessor": "step1",
- "successor": "step2"
+ "predecessor": "memory:sdk/tests/web/native/main.dart#step1",
+ "successor": "memory:sdk/tests/web/native/main.dart#step2"
},
{
"type": "order",
- "predecessor": "step2",
- "successor": "step3"
+ "predecessor": "memory:sdk/tests/web/native/main.dart#step2",
+ "successor": "memory:sdk/tests/web/native/main.dart#step3"
}
-]
+]
\ No newline at end of file
diff --git a/tools/VERSION b/tools/VERSION
index 4eb5ac1..cdd0b9e 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 15
PATCH 0
-PRERELEASE 288
+PRERELEASE 289
PRERELEASE_PATCH 0
\ No newline at end of file