From be37e3a912f6d5a2a57544f60362be65b7be8284 Mon Sep 17 00:00:00 2001 From: Daniel Kirchner Date: Thu, 12 Apr 2018 18:14:48 +0200 Subject: Stricter check for member access to "this" in constructor. --- .../parsing/constructor_allowed_this.sol | 28 ++++++++++++++++++++++ .../syntaxTests/parsing/constructor_super.sol | 10 ++++++++ 2 files changed, 38 insertions(+) create mode 100644 test/libsolidity/syntaxTests/parsing/constructor_allowed_this.sol create mode 100644 test/libsolidity/syntaxTests/parsing/constructor_super.sol (limited to 'test/libsolidity/syntaxTests/parsing') diff --git a/test/libsolidity/syntaxTests/parsing/constructor_allowed_this.sol b/test/libsolidity/syntaxTests/parsing/constructor_allowed_this.sol new file mode 100644 index 00000000..9f714aea --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/constructor_allowed_this.sol @@ -0,0 +1,28 @@ +contract A { + function a() public pure { + } +} +contract B { + constructor(address) public { + } + function b(address) public returns (A) { + return new A(); + } +} +contract C { + B m_b; + C m_c; + constructor(C other_c) public { + m_c = other_c; + m_b = new B(this); + m_b.b(this).a(); + g(this).f(); + other_c.f(); + m_c.f(); + } + function f() public pure { + } + function g(C) public view returns (C) { + return m_c; + } +} diff --git a/test/libsolidity/syntaxTests/parsing/constructor_super.sol b/test/libsolidity/syntaxTests/parsing/constructor_super.sol new file mode 100644 index 00000000..fa1be187 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/constructor_super.sol @@ -0,0 +1,10 @@ +contract A { + function x() pure internal {} +} + +contract B is A { + constructor() public { + // used to trigger warning about using ``this`` in constructor + super.x(); + } +} -- cgit