mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:42:11 +00:00
Fix for NPE when an argument does not correspond to a constructor parameter.
R=brianwilkerson@google.com Change-Id: I97ba245398e4375e0e132cc3280db0357859e494 Reviewed-on: https://dart-review.googlesource.com/40104 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
357f457059
commit
330ad8d287
|
@ -38,6 +38,9 @@ class FlutterOutlineComputer {
|
|||
/// Flutter attribute, add it to the [attributes].
|
||||
void _addAttribute(List<protocol.FlutterOutlineAttribute> attributes,
|
||||
Expression argument, ParameterElement parameter) {
|
||||
if (parameter == null) {
|
||||
return;
|
||||
}
|
||||
if (argument is NamedExpression) {
|
||||
argument = (argument as NamedExpression).expression;
|
||||
}
|
||||
|
@ -88,8 +91,6 @@ class FlutterOutlineComputer {
|
|||
var attributes = <protocol.FlutterOutlineAttribute>[];
|
||||
var children = <protocol.FlutterOutline>[];
|
||||
for (var argument in node.argumentList.arguments) {
|
||||
ParameterElement parameter = argument.staticParameterElement;
|
||||
|
||||
bool isWidgetArgument = isWidgetType(argument.staticType);
|
||||
bool isWidgetListArgument = isListOfWidgetsType(argument.staticType);
|
||||
|
||||
|
@ -119,6 +120,7 @@ class FlutterOutlineComputer {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
ParameterElement parameter = argument.staticParameterElement;
|
||||
_addAttribute(attributes, argument, parameter);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -159,6 +159,24 @@ class MyWidget extends StatelessWidget {
|
|||
expect(attribute.literalValueString, 'my text');
|
||||
}
|
||||
|
||||
test_attributes_unresolved() async {
|
||||
FlutterOutline unitOutline = await _computeOutline('''
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
class MyWidget extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return const Row(1, foo: 2)
|
||||
}
|
||||
}
|
||||
''');
|
||||
var myWidget = unitOutline.children[0];
|
||||
var build = myWidget.children[0];
|
||||
|
||||
var rowOutline = build.children[0];
|
||||
expect(rowOutline.attributes, isEmpty);
|
||||
}
|
||||
|
||||
test_children() async {
|
||||
FlutterOutline unitOutline = await _computeOutline('''
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
|
Loading…
Reference in a new issue