From 443293aaf09eca7c3b88d621d056c4effee2c248 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 10 May 2012 17:54:18 +0200 Subject: Implement option class inheritance For now multiple, non-virtual inheritance is supported. An option class can now also be declared abstract using the class c = 0 {...}; syntax. New option, --exclude-base, controls whether base class information is present in usage and documentation. --- tests/parser/base.cli | 0 tests/parser/common.cli | 1 - tests/parser/makefile | 2 +- tests/parser/test-001-base.cli | 0 tests/parser/test-001-common.cli | 1 + tests/parser/test-001.cli | 4 ++-- tests/parser/test-003.cli | 20 +++++++++++++++++--- tests/parser/test-007-base.cli | 11 +++++++++++ tests/parser/test-007.cli | 29 +++++++++++++++++++++++++++++ tests/parser/test-007.std | 0 10 files changed, 61 insertions(+), 7 deletions(-) delete mode 100644 tests/parser/base.cli delete mode 100644 tests/parser/common.cli create mode 100644 tests/parser/test-001-base.cli create mode 100644 tests/parser/test-001-common.cli create mode 100644 tests/parser/test-007-base.cli create mode 100644 tests/parser/test-007.cli create mode 100644 tests/parser/test-007.std (limited to 'tests/parser') diff --git a/tests/parser/base.cli b/tests/parser/base.cli deleted file mode 100644 index e69de29..0000000 diff --git a/tests/parser/common.cli b/tests/parser/common.cli deleted file mode 100644 index c0c7262..0000000 --- a/tests/parser/common.cli +++ /dev/null @@ -1 +0,0 @@ -include "base.cli"; diff --git a/tests/parser/makefile b/tests/parser/makefile index eaceabd..490fbf3 100644 --- a/tests/parser/makefile +++ b/tests/parser/makefile @@ -7,7 +7,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make cxx_tun := driver.cxx -tests := 000 001 002 003 004 005 006 +tests := 000 001 002 003 004 005 006 007 # # diff --git a/tests/parser/test-001-base.cli b/tests/parser/test-001-base.cli new file mode 100644 index 0000000..e69de29 diff --git a/tests/parser/test-001-common.cli b/tests/parser/test-001-common.cli new file mode 100644 index 0000000..73fb928 --- /dev/null +++ b/tests/parser/test-001-common.cli @@ -0,0 +1 @@ +include "test-001-base.cli"; diff --git a/tests/parser/test-001.cli b/tests/parser/test-001.cli index 473a238..52f7f8e 100644 --- a/tests/parser/test-001.cli +++ b/tests/parser/test-001.cli @@ -2,5 +2,5 @@ // include ; include "types.hxx"; -include "common.cli"; -include "../parser/base.cli"; +include "test-001-common.cli"; +include "../parser/test-001-base.cli"; diff --git a/tests/parser/test-003.cli b/tests/parser/test-003.cli index bfd8c72..2920b16 100644 --- a/tests/parser/test-003.cli +++ b/tests/parser/test-003.cli @@ -1,9 +1,23 @@ -// class-def +// class-def, inheritance-spec, abstract-spec // class c1 { }; -class c2 +class c2 = 0 { -}; \ No newline at end of file +}; + +class c3: c1, ::c2 +{ +}; + +namespace n1 +{ + class c {}; +} + +class c4: n1::c = 0 +{ +}; + diff --git a/tests/parser/test-007-base.cli b/tests/parser/test-007-base.cli new file mode 100644 index 0000000..7c02a39 --- /dev/null +++ b/tests/parser/test-007-base.cli @@ -0,0 +1,11 @@ +class b1 {}; + +namespace n1 +{ + class b2 {}; + + namespace i1 + { + class b3 {}; + } +} diff --git a/tests/parser/test-007.cli b/tests/parser/test-007.cli new file mode 100644 index 0000000..3e5ca7f --- /dev/null +++ b/tests/parser/test-007.cli @@ -0,0 +1,29 @@ +// base class lookup +// + +include "test-007-base.cli"; + +class c1 {}; +class c2: c1 {}; +class c3: ::c1 {}; + +namespace n1 +{ + class c4 {}; + class c5: c4 {}; + class c6: n1::c4 {}; + class c7: ::n1::c4 {}; + + class c8: b2 {}; // From included. + class c9: i1::b3 {}; // From included. + + namespace i1 + { + class c10: c4 {}; // Outer scope. + class c11: b3 {}; // From included. + class c12: b2 {}; // Outer scope from included. + } +} + +class c13: n1::c4 {}; +class c14: ::n1::c4 {}; diff --git a/tests/parser/test-007.std b/tests/parser/test-007.std new file mode 100644 index 0000000..e69de29 -- cgit v1.1