Extra tests for shadowing within function parameter lists

This commit is contained in:
Kamil Śliwak 2021-05-11 17:04:52 +02:00 committed by chriseth
parent f59145f21f
commit 362fc6650d
6 changed files with 112 additions and 0 deletions

View File

@ -0,0 +1,20 @@
contract C {
enum EnumType {A, B, C}
struct StructType {
uint x;
}
function f(StructType memory StructType) external {}
function g(EnumType EnumType) external {}
function h(EnumType StructType, StructType memory EnumType) external {}
function z(EnumType e) external returns (uint EnumType) {}
}
// ----
// Warning 2519: (104-132): This declaration shadows an existing declaration.
// Warning 2519: (161-178): This declaration shadows an existing declaration.
// Warning 2519: (207-226): This declaration shadows an existing declaration.
// Warning 2519: (228-254): This declaration shadows an existing declaration.
// Warning 2519: (314-327): This declaration shadows an existing declaration.
// TypeError 5172: (104-114): Name has to refer to a struct, enum or contract.

View File

@ -0,0 +1,20 @@
library C {
enum EnumType {A, B, C}
struct StructType {
uint x;
}
function f1(function (StructType memory StructType) external f) external {}
function f2(function (EnumType EnumType) external f) external {}
function f3(function (EnumType StructType, StructType memory EnumType) external f) external {}
}
// ----
// Warning 6162: (114-142): Naming function type parameters is deprecated.
// Warning 6162: (194-211): Naming function type parameters is deprecated.
// Warning 6162: (263-282): Naming function type parameters is deprecated.
// Warning 6162: (284-310): Naming function type parameters is deprecated.
// Warning 2519: (114-142): This declaration shadows an existing declaration.
// Warning 2519: (194-211): This declaration shadows an existing declaration.
// Warning 2519: (263-282): This declaration shadows an existing declaration.
// Warning 2519: (284-310): This declaration shadows an existing declaration.

View File

@ -0,0 +1,20 @@
contract C {
enum EnumType {A, B, C}
struct StructType {
uint x;
}
function f() external returns (StructType memory StructType) {}
function g() external returns (EnumType EnumType) {}
function h() external returns (EnumType StructType, StructType memory EnumType) {}
function z(uint EnumType) external returns (EnumType e) {}
}
// ----
// Warning 2519: (124-152): This declaration shadows an existing declaration.
// Warning 2519: (192-209): This declaration shadows an existing declaration.
// Warning 2519: (249-268): This declaration shadows an existing declaration.
// Warning 2519: (270-296): This declaration shadows an existing declaration.
// Warning 2519: (317-330): This declaration shadows an existing declaration.
// TypeError 5172: (124-134): Name has to refer to a struct, enum or contract.

View File

@ -0,0 +1,20 @@
contract C {
enum EnumType {A, B, C}
struct StructType {
uint x;
}
function (StructType memory StructType) external ext1;
function (EnumType EnumType) external ext2;
function (EnumType StructType, StructType memory EnumType) external ext3;
}
// ----
// Warning 6162: (103-131): Naming function type parameters is deprecated.
// Warning 6162: (162-179): Naming function type parameters is deprecated.
// Warning 6162: (210-229): Naming function type parameters is deprecated.
// Warning 6162: (231-257): Naming function type parameters is deprecated.
// Warning 2519: (103-131): This declaration shadows an existing declaration.
// Warning 2519: (162-179): This declaration shadows an existing declaration.
// Warning 2519: (210-229): This declaration shadows an existing declaration.
// Warning 2519: (231-257): This declaration shadows an existing declaration.

View File

@ -0,0 +1,20 @@
contract C {
enum EnumType {A, B, C}
struct StructType {
uint x;
}
function () external returns (StructType memory StructType) ext1;
function () external returns (EnumType EnumType) ext2;
function () external returns (EnumType StructType, StructType memory EnumType) ext3;
}
// ----
// SyntaxError 7304: (123-151): Return parameters in function types may not be named.
// SyntaxError 7304: (193-210): Return parameters in function types may not be named.
// SyntaxError 7304: (252-271): Return parameters in function types may not be named.
// SyntaxError 7304: (273-299): Return parameters in function types may not be named.
// Warning 2519: (123-151): This declaration shadows an existing declaration.
// Warning 2519: (193-210): This declaration shadows an existing declaration.
// Warning 2519: (252-271): This declaration shadows an existing declaration.
// Warning 2519: (273-299): This declaration shadows an existing declaration.

View File

@ -0,0 +1,12 @@
contract C {
enum E {a, b, c}
struct S {function (E X) external f; uint E;}
struct T {function (E T) external f; uint E;}
struct U {function (E E) external f;}
}
// ----
// Warning 6162: (58-61): Naming function type parameters is deprecated.
// Warning 6162: (108-111): Naming function type parameters is deprecated.
// Warning 6162: (158-161): Naming function type parameters is deprecated.
// Warning 2519: (108-111): This declaration shadows an existing declaration.
// Warning 2519: (158-161): This declaration shadows an existing declaration.