blob: 74085faa4e3a826151eec33bc1ae2bf731298ffa [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/analysis/results.dart';
import 'package:analyzer/exception/exception.dart';
void sendFlutterNotificationOutline(
AnalysisServer server, ResolvedUnitResult resolvedUnit) {
_sendNotification(server, () {
var computer = FlutterOutlineComputer(resolvedUnit);
var outline = computer.compute();
// send notification
var params = protocol.FlutterOutlineParams(
resolvedUnit.path,
outline,
);
server.sendNotification(params.toNotification());
});
}
/// Runs the given notification producing function [f], catching exceptions.
void _sendNotification(AnalysisServer server, Function() f) {
try {
f();
} catch (exception, stackTrace) {
server.instrumentationService.logException(CaughtException.withMessage(
'Failed to send notification', exception, stackTrace));
}
}