diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2013-04-03 11:30:06 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2013-04-03 11:30:06 +0200 |
commit | ce2991ee863e2e5faef95462242552515e1cf89c (patch) | |
tree | d0a515758e2f031486e5bf9aa2175ad42801cda2 | |
parent | Asserting rtl::O[U]StringBuffer::operator [] preconditions (diff) | |
download | core-ce2991ee863e2e5faef95462242552515e1cf89c.tar.gz core-ce2991ee863e2e5faef95462242552515e1cf89c.zip |
Forbid old-style services/singletons inheriting new-style services
...does not make sense. Adapted some old-style services accordingly, where the
inherited service had been changed to new-style after the fact.
Change-Id: I5f3e4ddf99160778a319062a6c84f83529ff177b
-rw-r--r-- | cppu/qa/cppumaker/types.idl | 2 | ||||
-rw-r--r-- | idlc/CustomTarget_parser_test.mk | 5 | ||||
-rw-r--r-- | idlc/inc/idlc/astservice.hxx | 9 | ||||
-rw-r--r-- | idlc/source/parser.y | 3 | ||||
-rw-r--r-- | idlc/test/parser/oldstyle.tests | 28 | ||||
-rw-r--r-- | offapi/com/sun/star/script/vba/VBASpreadsheetEventProcessor.idl | 4 | ||||
-rw-r--r-- | offapi/com/sun/star/script/vba/VBATextEventProcessor.idl | 4 | ||||
-rw-r--r-- | offapi/com/sun/star/sdb/Query.idl | 4 | ||||
-rw-r--r-- | offapi/type_reference/types.rdb | bin | 7439872 -> 7439872 bytes | |||
-rw-r--r-- | udkapi/com/sun/star/loader/Java2.idl | 8 |
10 files changed, 55 insertions, 12 deletions
diff --git a/cppu/qa/cppumaker/types.idl b/cppu/qa/cppumaker/types.idl index da5aa8fe62cd..2c0a0559af7a 100644 --- a/cppu/qa/cppumaker/types.idl +++ b/cppu/qa/cppumaker/types.idl @@ -181,7 +181,7 @@ service S2: XTest; service S3 { interface XTest; }; -singleton S4 { service S2; }; +singleton S4 { service S3; }; module services { diff --git a/idlc/CustomTarget_parser_test.mk b/idlc/CustomTarget_parser_test.mk index 1c3e44b2b0ba..6be490aed38b 100644 --- a/idlc/CustomTarget_parser_test.mk +++ b/idlc/CustomTarget_parser_test.mk @@ -51,6 +51,11 @@ $(call gb_CustomTarget_get_target,idlc/parser_test) : \ -O $(call gb_CustomTarget_get_workdir,idlc/parser_test) \ -stdin && \ $(PERL) $(SRCDIR)/solenv/bin/exectest.pl \ + $(SRCDIR)/idlc/test/parser/oldstyle.tests \ + $(call gb_Executable_get_command,idlc) \ + -O $(call gb_CustomTarget_get_workdir,idlc/parser_test) \ + -stdin && \ + $(PERL) $(SRCDIR)/solenv/bin/exectest.pl \ $(SRCDIR)/idlc/test/parser/polystruct.tests \ $(call gb_Executable_get_command,idlc) \ -O $(call gb_CustomTarget_get_workdir,idlc/parser_test) \ diff --git a/idlc/inc/idlc/astservice.hxx b/idlc/inc/idlc/astservice.hxx index 6760462a4c22..d3e0b643b5d9 100644 --- a/idlc/inc/idlc/astservice.hxx +++ b/idlc/inc/idlc/astservice.hxx @@ -29,22 +29,31 @@ public: AstService(const ::rtl::OString& name, AstScope* pScope) : AstDeclaration(NT_service, name, pScope) , AstScope(NT_service) + , m_singleInterfaceBasedService(false) , m_defaultConstructor(false) {} AstService(const NodeType type, const ::rtl::OString& name, AstScope* pScope) : AstDeclaration(type, name, pScope) , AstScope(type) + , m_singleInterfaceBasedService(false) , m_defaultConstructor(false) {} virtual ~AstService() {} virtual sal_Bool dump(RegistryKey& rKey); + void setSingleInterfaceBasedService() + { m_singleInterfaceBasedService = true; } + void setDefaultConstructor(bool b) { m_defaultConstructor = b; } + bool isSingleInterfaceBasedService() const + { return m_singleInterfaceBasedService; } + bool checkLastConstructor() const; private: + bool m_singleInterfaceBasedService; bool m_defaultConstructor; }; diff --git a/idlc/source/parser.y b/idlc/source/parser.y index 8729a63ade7e..e338e57be7aa 100644 --- a/idlc/source/parser.y +++ b/idlc/source/parser.y @@ -1707,7 +1707,7 @@ service_export : pDecl = pScope->lookupByName(*iter); if ( pDecl && (pDecl->getNodeType() == NT_service) ) { - if ( pScope->getScopeNodeType() == NT_singleton && pScope->nMembers() > 0 ) + if ( static_cast< AstService * >(pDecl)->isSingleInterfaceBasedService() || pScope->getScopeNodeType() == NT_singleton && pScope->nMembers() > 0 ) idlc()->error()->error0(EIDL_ILLEGAL_ADD); else if ( idlc()->error()->checkPublished(pDecl) ) { @@ -1907,6 +1907,7 @@ service_interface_dfn: { AstService * s = static_cast< AstService * >(idlc()->scopes()->top()); if (s != 0) { + s->setSingleInterfaceBasedService(); s->setDefaultConstructor(!$4); } } diff --git a/idlc/test/parser/oldstyle.tests b/idlc/test/parser/oldstyle.tests new file mode 100644 index 000000000000..c6692b977d72 --- /dev/null +++ b/idlc/test/parser/oldstyle.tests @@ -0,0 +1,28 @@ +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +EXPECT SUCCESS "oldstyle.tests 1": +service S1 {}; +service S2 { service S1; }; + + +EXPECT FAILURE "oldstyle.tests 2": +interface X {}; +service S1: X; +service S2 { service S1; }; + + +EXPECT SUCCESS "oldstyle.tests 3": +service S1 {}; +singleton S2 { service S1; }; + + +EXPECT FAILURE "oldstyle.tests 4": +interface X {}; +service S1: X; +singleton S2 { service S1; }; diff --git a/offapi/com/sun/star/script/vba/VBASpreadsheetEventProcessor.idl b/offapi/com/sun/star/script/vba/VBASpreadsheetEventProcessor.idl index 6cb61f5fa0f2..ac306b0424c5 100644 --- a/offapi/com/sun/star/script/vba/VBASpreadsheetEventProcessor.idl +++ b/offapi/com/sun/star/script/vba/VBASpreadsheetEventProcessor.idl @@ -20,7 +20,7 @@ #ifndef __com_sun_star_script_vba_VBASpreadsheetEventProcessor_idl__ #define __com_sun_star_script_vba_VBASpreadsheetEventProcessor_idl__ -#include <com/sun/star/script/vba/VBAEventProcessor.idl> +#include <com/sun/star/script/vba/XVBAEventProcessor.idl> module com { module sun { module star { module script { module vba { @@ -28,7 +28,7 @@ module com { module sun { module star { module script { module vba { service VBASpreadsheetEventProcessor { - service VBAEventProcessor; + interface XVBAEventProcessor; }; diff --git a/offapi/com/sun/star/script/vba/VBATextEventProcessor.idl b/offapi/com/sun/star/script/vba/VBATextEventProcessor.idl index 2535831511aa..816163fbb915 100644 --- a/offapi/com/sun/star/script/vba/VBATextEventProcessor.idl +++ b/offapi/com/sun/star/script/vba/VBATextEventProcessor.idl @@ -20,7 +20,7 @@ #ifndef __com_sun_star_script_vba_VBATextEventProcessor_idl__ #define __com_sun_star_script_vba_VBATextEventProcessor_idl__ -#include <com/sun/star/script/vba/VBAEventProcessor.idl> +#include <com/sun/star/script/vba/XVBAEventProcessor.idl> module com { module sun { module star { module script { module vba { @@ -28,7 +28,7 @@ module com { module sun { module star { module script { module vba { service VBATextEventProcessor { - service VBAEventProcessor; + interface XVBAEventProcessor; }; diff --git a/offapi/com/sun/star/sdb/Query.idl b/offapi/com/sun/star/sdb/Query.idl index 38f97e3e6848..13cc935929cb 100644 --- a/offapi/com/sun/star/sdb/Query.idl +++ b/offapi/com/sun/star/sdb/Query.idl @@ -29,7 +29,7 @@ #include <com/sun/star/sdb/DataSettings.idl> -#include <com/sun/star/sdb/QueryDefinition.idl> +#include <com/sun/star/sdb/XQueryDefinition.idl> module com { module sun { module star { module sdb { @@ -47,7 +47,7 @@ published service Query /** defines the command of the query. */ - service com::sun::star::sdb::QueryDefinition; + interface com::sun::star::sdb::XQueryDefinition; /** is used for customization of data appearance. diff --git a/offapi/type_reference/types.rdb b/offapi/type_reference/types.rdb Binary files differindex b0c2c88a8ae8..dd3996911373 100644 --- a/offapi/type_reference/types.rdb +++ b/offapi/type_reference/types.rdb diff --git a/udkapi/com/sun/star/loader/Java2.idl b/udkapi/com/sun/star/loader/Java2.idl index 49553b7fcc0e..6e3417789f59 100644 --- a/udkapi/com/sun/star/loader/Java2.idl +++ b/udkapi/com/sun/star/loader/Java2.idl @@ -19,8 +19,7 @@ #ifndef __com_sun_star_loader_Java2_idl__ #define __com_sun_star_loader_Java2_idl__ -#include <com/sun/star/loader/Java.idl> - +#include <com/sun/star/loader/XImplementationLoader.idl> module com { module sun { module star { module loader { /**the same as <type scope="com::sun::star::loader">Java</type>. @@ -28,11 +27,12 @@ module com { module sun { module star { module loader { <type scope="com::sun::star::loader">Java</type> service was intended for UNO 2 components. Since UNO 2 is not supported anymore, the service name is reused again. + + @deprecated */ published service Java2 { - service Java; - + interface XImplementationLoader; }; |