|  | // Copyright (c) 2015, 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. | 
|  |  | 
|  | // Verify that the ?. operator cannot be used with "super". | 
|  |  | 
|  | class B { | 
|  | B(); | 
|  | B.namedConstructor(); | 
|  | var field = 1; | 
|  | method() => 1; | 
|  | } | 
|  |  | 
|  | class C extends B { | 
|  | C() | 
|  | : super?.namedConstructor() | 
|  | //     ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] Cannot use '?.' here. | 
|  | //     ^ | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | ; | 
|  |  | 
|  | test() { | 
|  | super?.field = 1; | 
|  | //   ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | super?.field += 1; | 
|  | //   ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | super?.field ??= 1; | 
|  | //   ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | super?.field; | 
|  | //   ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | 1 * super?.field; | 
|  | //       ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | -super?.field; | 
|  | //    ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | ~super?.field; | 
|  | //    ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | !super?.field; | 
|  | //   ^^^^^^^^^^^^ | 
|  | // [analyzer] COMPILE_TIME_ERROR.NON_BOOL_NEGATION_EXPRESSION | 
|  | //        ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | //          ^ | 
|  | // [cfe] A value of type 'int' can't be assigned to a variable of type 'bool'. | 
|  | --super?.field; | 
|  | //     ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | ++super?.field; | 
|  | //     ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | super?.method(); | 
|  | //   ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | 1 * super?.method(); | 
|  | //       ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | -super?.method(); | 
|  | //    ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | ~super?.method(); | 
|  | //    ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | !super?.method(); | 
|  | //    ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | --super?.method(); | 
|  | //     ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | //       ^ | 
|  | // [cfe] Can't assign to this. | 
|  | //              ^ | 
|  | // [analyzer] SYNTACTIC_ERROR.MISSING_ASSIGNABLE_SELECTOR | 
|  | ++super?.method(); | 
|  | //     ^^ | 
|  | // [analyzer] SYNTACTIC_ERROR.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER | 
|  | // [cfe] The operator '?.' cannot be used with 'super' because 'super' cannot be null. | 
|  | //       ^ | 
|  | // [cfe] Can't assign to this. | 
|  | //              ^ | 
|  | // [analyzer] SYNTACTIC_ERROR.MISSING_ASSIGNABLE_SELECTOR | 
|  | } | 
|  | } | 
|  |  | 
|  | main() { | 
|  | new C().test(); | 
|  | } |