Skip to content

Commit

Permalink
dart-lang#1400. [Views] Syntax tests added
Browse files Browse the repository at this point in the history
  • Loading branch information
sgrekhov committed Oct 4, 2022
1 parent 447a086 commit 8f24016
Show file tree
Hide file tree
Showing 11 changed files with 446 additions and 0 deletions.
36 changes: 36 additions & 0 deletions LanguageFeatures/Views/syntax_A01_t01.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Copyright (c) 2022, 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.

/// @assertion A rule for <viewDeclaration> is added to the grammar, along with
/// some rules for elements used in view declarations:
///
/// <viewDeclaration> ::=
/// 'view' 'class' <typeIdentifier> <typeParameters>?
/// <viewPrimaryConstructor>?
/// <interfaces>?
/// '{'
/// (<metadata> <viewMemberDeclaration>)*
/// '}'
///
/// <viewPrimaryConstructor> ::=
/// '(' <type> <identifier> ')'
///
/// <viewMemberDeclaration> ::=
/// <classMemberDefinition>
/// The token `view` is made a built-in identifier.
///
/// @description Checks that it is a compile-time error to declare a function
/// named `view`
/// @author sgrekhov22@gmail.com
// SharedOptions=--enable-experiment=extension-types

void view() {}
// ^^^^
// [analyzer] unspecified
// [cfe] unspecified

main() {
view();
}
37 changes: 37 additions & 0 deletions LanguageFeatures/Views/syntax_A01_t02.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright (c) 2022, 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.

/// @assertion A rule for <viewDeclaration> is added to the grammar, along with
/// some rules for elements used in view declarations:
///
/// <viewDeclaration> ::=
/// 'view' 'class' <typeIdentifier> <typeParameters>?
/// <viewPrimaryConstructor>?
/// <interfaces>?
/// '{'
/// (<metadata> <viewMemberDeclaration>)*
/// '}'
///
/// <viewPrimaryConstructor> ::=
/// '(' <type> <identifier> ')'
///
/// <viewMemberDeclaration> ::=
/// <classMemberDefinition>
/// The token `view` is made a built-in identifier.
///
/// @description Checks that it is a compile-time error to declare a class
/// named `view`
/// @author sgrekhov22@gmail.com
// SharedOptions=--enable-experiment=extension-types

class view {
// ^^^^
// [analyzer] unspecified
// [cfe] unspecified
}

main() {
view();
}
39 changes: 39 additions & 0 deletions LanguageFeatures/Views/syntax_A01_t03.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// Copyright (c) 2022, 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.

/// @assertion A rule for <viewDeclaration> is added to the grammar, along with
/// some rules for elements used in view declarations:
///
/// <viewDeclaration> ::=
/// 'view' 'class' <typeIdentifier> <typeParameters>?
/// <viewPrimaryConstructor>?
/// <interfaces>?
/// '{'
/// (<metadata> <viewMemberDeclaration>)*
/// '}'
///
/// <viewPrimaryConstructor> ::=
/// '(' <type> <identifier> ')'
///
/// <viewMemberDeclaration> ::=
/// <classMemberDefinition>
/// The token `view` is made a built-in identifier.
///
/// @description Checks that it is a compile-time error to declare a mixin
/// named `view`
/// @author sgrekhov22@gmail.com
// SharedOptions=--enable-experiment=extension-types

mixin view on Object {
// ^^^^
// [analyzer] unspecified
// [cfe] unspecified
}

class VA = Object with view;

main() {
VA();
}
34 changes: 34 additions & 0 deletions LanguageFeatures/Views/syntax_A01_t04.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Copyright (c) 2022, 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.

/// @assertion A rule for <viewDeclaration> is added to the grammar, along with
/// some rules for elements used in view declarations:
///
/// <viewDeclaration> ::=
/// 'view' 'class' <typeIdentifier> <typeParameters>?
/// <viewPrimaryConstructor>?
/// <interfaces>?
/// '{'
/// (<metadata> <viewMemberDeclaration>)*
/// '}'
///
/// <viewPrimaryConstructor> ::=
/// '(' <type> <identifier> ')'
///
/// <viewMemberDeclaration> ::=
/// <classMemberDefinition>
/// The token `view` is made a built-in identifier.
///
/// @description Checks that it is a compile-time error to declare a variable
/// named `view`
/// @author sgrekhov22@gmail.com
// SharedOptions=--enable-experiment=extension-types

main() {
int view = 42;
// ^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
41 changes: 41 additions & 0 deletions LanguageFeatures/Views/syntax_A01_t05.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Copyright (c) 2022, 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.

/// @assertion A rule for <viewDeclaration> is added to the grammar, along with
/// some rules for elements used in view declarations:
///
/// <viewDeclaration> ::=
/// 'view' 'class' <typeIdentifier> <typeParameters>?
/// <viewPrimaryConstructor>?
/// <interfaces>?
/// '{'
/// (<metadata> <viewMemberDeclaration>)*
/// '}'
///
/// <viewPrimaryConstructor> ::=
/// '(' <type> <identifier> ')'
///
/// <viewMemberDeclaration> ::=
/// <classMemberDefinition>
/// The token `view` is made a built-in identifier.
///
/// @description Checks that it is a compile-time error to declare a constant
/// named `view`
/// @author sgrekhov22@gmail.com
// SharedOptions=--enable-experiment=extension-types

const view = 42;
// ^^^^
// [analyzer] unspecified
// [cfe] unspecified

@view class View {
final int id;
View(this.id);
}

main() {
View(0);
}
36 changes: 36 additions & 0 deletions LanguageFeatures/Views/syntax_A01_t06.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Copyright (c) 2022, 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.

/// @assertion A rule for <viewDeclaration> is added to the grammar, along with
/// some rules for elements used in view declarations:
///
/// <viewDeclaration> ::=
/// 'view' 'class' <typeIdentifier> <typeParameters>?
/// <viewPrimaryConstructor>?
/// <interfaces>?
/// '{'
/// (<metadata> <viewMemberDeclaration>)*
/// '}'
///
/// <viewPrimaryConstructor> ::=
/// '(' <type> <identifier> ')'
///
/// <viewMemberDeclaration> ::=
/// <classMemberDefinition>
/// The token `view` is made a built-in identifier.
///
/// @description Checks that it is a compile-time error import a library with
/// import prefix `view`
/// @author sgrekhov22@gmail.com
// SharedOptions=--enable-experiment=extension-types

import "views_lib.dart" as view;
// ^^^^
// [analyzer] unspecified
// [cfe] unspecified

main() {
view.x;
}
36 changes: 36 additions & 0 deletions LanguageFeatures/Views/syntax_A01_t07.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Copyright (c) 2022, 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.

/// @assertion A rule for <viewDeclaration> is added to the grammar, along with
/// some rules for elements used in view declarations:
///
/// <viewDeclaration> ::=
/// 'view' 'class' <typeIdentifier> <typeParameters>?
/// <viewPrimaryConstructor>?
/// <interfaces>?
/// '{'
/// (<metadata> <viewMemberDeclaration>)*
/// '}'
///
/// <viewPrimaryConstructor> ::=
/// '(' <type> <identifier> ')'
///
/// <viewMemberDeclaration> ::=
/// <classMemberDefinition>
/// The token `view` is made a built-in identifier.
///
/// @description Checks that it is a compile-time error to declare a type alias
/// named `view`
/// @author sgrekhov22@gmail.com
// SharedOptions=--enable-experiment=extension-types

typedef view = String;
// ^^^^
// [analyzer] unspecified
// [cfe] unspecified

main() {
view s = "";
}
59 changes: 59 additions & 0 deletions LanguageFeatures/Views/syntax_A02_t01.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// Copyright (c) 2022, 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.

/// @assertion A rule for <viewDeclaration> is added to the grammar, along with
/// some rules for elements used in view declarations:
///
/// <viewDeclaration> ::=
/// 'view' 'class' <typeIdentifier> <typeParameters>?
/// <viewPrimaryConstructor>?
/// <interfaces>?
/// '{'
/// (<metadata> <viewMemberDeclaration>)*
/// '}'
///
/// <viewPrimaryConstructor> ::=
/// '(' <type> <identifier> ')'
///
/// <viewMemberDeclaration> ::=
/// <classMemberDefinition>
/// ...
/// If a view declaration named View includes a <viewPrimaryConstructor> then it
/// is a compile-time error if the declaration includes a constructor
/// declaration named View. (But it can still contain other constructors.)
///
/// @description Checks that it is a compile-time error if a view declaration
/// named `View` includes a <viewPrimaryConstructor> and includes a constructor
/// named `View`
/// @author sgrekhov22@gmail.com
// SharedOptions=--enable-experiment=extension-types

view class View1(int id) {
View1(this.id);
//^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}

view class View2(int id) {
int _x;
View2(int id, this._x) {}
//^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}

view class View3(int id) {
View3();
//^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}

main() {
View1(1);
View2(2);
View3(3);
}
62 changes: 62 additions & 0 deletions LanguageFeatures/Views/syntax_A02_t02.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
// Copyright (c) 2022, 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.

/// @assertion A rule for <viewDeclaration> is added to the grammar, along with
/// some rules for elements used in view declarations:
///
/// <viewDeclaration> ::=
/// 'view' 'class' <typeIdentifier> <typeParameters>?
/// <viewPrimaryConstructor>?
/// <interfaces>?
/// '{'
/// (<metadata> <viewMemberDeclaration>)*
/// '}'
///
/// <viewPrimaryConstructor> ::=
/// '(' <type> <identifier> ')'
///
/// <viewMemberDeclaration> ::=
/// <classMemberDefinition>
/// ...
/// If a view declaration named View includes a <viewPrimaryConstructor> then it
/// is a compile-time error if the declaration includes a constructor
/// declaration named View. (But it can still contain other constructors.)
///
/// @description Checks that it is a compile-time error if a view declaration
/// named `View` includes a <viewPrimaryConstructor> with zero or more than one
/// parameters
/// @author sgrekhov22@gmail.com
// SharedOptions=--enable-experiment=extension-types

view class View1() {
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}

view class View2(int id, String name) {
// ^
// [analyzer] unspecified
// [cfe] unspecified
}

view class View3(int id, {String name}) {
// ^
// [analyzer] unspecified
// [cfe] unspecified
}

view class View4(int id, [String name]) {
// ^
// [analyzer] unspecified
// [cfe] unspecified
}

main() {
print(View1);
print(View2);
print(View3);
print(View4);
}
Loading

0 comments on commit 8f24016

Please sign in to comment.