blob: f526036f8303fa3562863e2a3dac8ba6d798d7c4 [file] [log] [blame]
// Copyright (c) 2018, 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 'package:analysis_server/src/analysis_server.dart';
import 'package:analysis_server/src/flutter/flutter_outline_computer.dart';
import 'package:analysis_server/src/protocol_server.dart' as protocol;
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/src/generated/source.dart';
void sendFlutterNotificationOutline(AnalysisServer server, String file,
String content, LineInfo lineInfo, CompilationUnit dartUnit) {
_sendNotification(server, () {
var computer =
new FlutterOutlineComputer(file, content, lineInfo, dartUnit);
protocol.FlutterOutline outline = computer.compute();
// send notification
var params = new protocol.FlutterOutlineParams(file, outline);
server.sendNotification(params.toNotification());
});
}
/**
* Runs the given notification producing function [f], catching exceptions.
*/
void _sendNotification(AnalysisServer server, f()) {
ServerPerformanceStatistics.notices.makeCurrentWhile(() {
try {
f();
} catch (exception, stackTrace) {
server.sendServerErrorNotification(
'Failed to send notification', exception, stackTrace);
}
});
}