blob: 5225709e273af96c2cd1761c17e65ec1a2db22f0 [file] [log] [blame]
// Copyright (c) 2017, 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.
// From The Dart Programming Language Specification, section 16.33
// "Identifier Reference":
//
// "A built-in identifier is one of the identifiers produced by the
// production BUILT_IN_IDENTIFIER. It is a compile-time error if a
// built-in identifier is used as the declared name of a prefix, class,
// type parameter or type alias. It is a compile-time error to use a
// built-in identifier other than dynamic in a type annotation or type
// parameter."
//
// Observation: it is illegal to use a built-in identifier other than
// `dynamic` in a type annotation. A type annotation is not fully defined
// in the specification, so we assume this means that the grammar
// production "type" cannot be a built-in identifier, and it cannot contain
// a built-in identifier at a location where it must denote a type.
//
// Note that we have several ways to use built-in identifiers other than
// `dynamic` in other locations in a type, e.g., `Function(int set)`.
final // optional type before variable must not be a built-in identifier.
abstract // //# abstract: syntax error
as // //# as: syntax error
covariant // //# covariant: syntax error
deferred // //# deferred: syntax error
dynamic // //# dynamic: ok
export // //# export: syntax error
external // //# external: syntax error
factory // //# factory: syntax error
get // //# get: syntax error
implements // //# implements: syntax error
import // //# import: syntax error
interface // //# interface: syntax error
library // //# library: syntax error
mixin // //# mixin: syntax error
operator // //# operator: syntax error
part // //# part: syntax error
set // //# set: syntax error
static // //# static: syntax error
typedef // //# typedef: syntax error
abstract<int> // //# abstract-gen: syntax error
as<int> // //# as-gen: syntax error
covariant<int> // //# covariant-gen: syntax error
deferred<int> // //# deferred-gen: syntax error
dynamic<int> // //# dynamic-gen: compile-time error
export<int> // //# export-gen: syntax error
external<int> // //# external-gen: syntax error
factory<int> // //# factory-gen: syntax error
get<int> // //# get-gen: syntax error
implements<int> // //# implements-gen: syntax error
import<int> // //# import-gen: syntax error
interface<int> // //# interface-gen: syntax error
library<int> // //# library-gen: syntax error
mixin<int> // //# mixin-gen: syntax error
operator<int> // //# operator-gen: syntax error
part<int> // //# part-gen: syntax error
set<int> // //# set-gen: syntax error
static<int> // //# static-gen: syntax error
typedef<int> // //# typedef-gen: syntax error
List<abstract> // //# abstract-list: syntax error
List<as> // //# as-list: syntax error
List<covariant> // //# covariant-list: syntax error
List<deferred> // //# deferred-list: syntax error
List<dynamic> // //# dynamic-list: ok
List<export> // //# export-list: syntax error
List<external> // //# external-list: syntax error
List<factory> // //# factory-list: syntax error
List<get> // //# get-list: syntax error
List<implements> // //# implements-list: syntax error
List<import> // //# import-list: syntax error
List<interface> // //# interface-list: syntax error
List<library> // //# library-list: syntax error
List<mixin> // //# mixin-list: syntax error
List<operator> // //# operator-list: syntax error
List<part> // //# part-list: syntax error
List<set> // //# set-list: syntax error
List<static> // //# static-list: syntax error
List<typedef> // //# typedef-list: syntax error
Function(abstract) // //# abstract-funarg: syntax error
Function(as) // //# as-funarg: syntax error
Function(covariant) // //# covariant-funarg: syntax error
Function(deferred) // //# deferred-funarg: syntax error
Function(dynamic) // //# dynamic-funarg: ok
Function(export) // //# export-funarg: syntax error
Function(external) // //# external-funarg: syntax error
Function(factory) // //# factory-funarg: syntax error
Function(get) // //# get-funarg: syntax error
Function(implements) // //# implements-funarg: syntax error
Function(import) // //# import-funarg: syntax error
Function(interface) // //# interface-funarg: syntax error
Function(library) // //# library-funarg: syntax error
Function(mixin) // //# mixin-funarg: syntax error
Function(operator) // //# operator-funarg: syntax error
Function(part) // //# part-funarg: syntax error
Function(set) // //# set-funarg: syntax error
Function(static) // //# static-funarg: syntax error
Function(typedef) // //# typedef-funarg: syntax error
abstract Function() // //# abstract-funret: syntax error
as Function() // //# as-funret: syntax error
covariant Function() // //# covariant-funret: syntax error
deferred Function() // //# deferred-funret: syntax error
dynamic Function() // //# dynamic-funret: ok
export Function() // //# export-funret: syntax error
external Function() // //# external-funret: syntax error
factory Function() // //# factory-funret: syntax error
get Function() // //# get-funret: syntax error
implements Function() // //# implements-funret: syntax error
import Function() // //# import-funret: syntax error
interface Function() // //# interface-funret: syntax error
library Function() // //# library-funret: syntax error
mixin Function() // //# mixin-funret: syntax error
operator Function() // //# operator-funret: syntax error
part Function() // //# part-funret: syntax error
set Function() // //# set-funret: syntax error
static Function() // //# static-funret: syntax error
typedef Function() // //# typedef-funret: syntax error
x = null;
main() {
x.toString();
}