summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2013-04-03 11:30:06 +0200
committerStephan Bergmann <sbergman@redhat.com>2013-04-03 11:30:06 +0200
commitce2991ee863e2e5faef95462242552515e1cf89c (patch)
treed0a515758e2f031486e5bf9aa2175ad42801cda2
parent8644d10098a10e02c426a4ae80ce179586f35089 (diff)
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.idl2
-rw-r--r--idlc/CustomTarget_parser_test.mk5
-rw-r--r--idlc/inc/idlc/astservice.hxx9
-rw-r--r--idlc/source/parser.y3
-rw-r--r--idlc/test/parser/oldstyle.tests28
-rw-r--r--offapi/com/sun/star/script/vba/VBASpreadsheetEventProcessor.idl4
-rw-r--r--offapi/com/sun/star/script/vba/VBATextEventProcessor.idl4
-rw-r--r--offapi/com/sun/star/sdb/Query.idl4
-rw-r--r--offapi/type_reference/types.rdbbin7439872 -> 7439872 bytes
-rw-r--r--udkapi/com/sun/star/loader/Java2.idl8
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
index b0c2c88a8ae8..dd3996911373 100644
--- a/offapi/type_reference/types.rdb
+++ b/offapi/type_reference/types.rdb
Binary files differ
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;
};