Index: pkg/compiler/lib/src/typechecker.dart |
diff --git a/pkg/compiler/lib/src/typechecker.dart b/pkg/compiler/lib/src/typechecker.dart |
index a2a52c14ca48e77f88bc4ac8433998a40c6b386f..b72eab124dacfcab5c1c9cb37cdf6541a74e108b 100644 |
--- a/pkg/compiler/lib/src/typechecker.dart |
+++ b/pkg/compiler/lib/src/typechecker.dart |
@@ -1041,6 +1041,10 @@ class TypeCheckerVisitor extends Visitor<DartType> { |
Element receiverElement = elements[node.receiver]; |
if (receiverElement != null) { |
if (receiverElement.isPrefix) { |
+ if (node.isConditional) { |
+ // Skip cases like `prefix?.topLevel`. |
+ return const DynamicAccess(); |
+ } |
assert(invariant(node, element != null, |
message: 'Prefixed node has no element.')); |
return computeResolvedAccess(node, name, element, memberKind); |