Index: pkg/analyzer/lib/src/summary/link.dart |
diff --git a/pkg/analyzer/lib/src/summary/link.dart b/pkg/analyzer/lib/src/summary/link.dart |
index 6b2e1d711bb79d8355471647a36aa08ece60df86..f4486bb0e969784fc79068f47f3075497563bd13 100644 |
--- a/pkg/analyzer/lib/src/summary/link.dart |
+++ b/pkg/analyzer/lib/src/summary/link.dart |
@@ -2265,6 +2265,9 @@ class ExprTypeComputer { |
case UnlinkedExprOperation.pushParameter: |
stack.add(_findParameterType(_getNextString())); |
break; |
+ case UnlinkedExprOperation.ifNull: |
+ _doIfNull(); |
+ break; |
default: |
// TODO(paulberry): implement. |
throw new UnimplementedError('$operation'); |
@@ -2404,6 +2407,14 @@ class ExprTypeComputer { |
}()); |
} |
+ void _doIfNull() { |
+ DartType secondType = stack.removeLast(); |
+ DartType firstType = stack.removeLast(); |
+ DartType type = _leastUpperBound(firstType, secondType); |
+ type = _dynamicIfNull(type); |
+ stack.add(type); |
+ } |
+ |
void _doInvokeConstructor() { |
int numNamed = _getNextInt(); |
int numPositional = _getNextInt(); |