Kaydet (Commit) ce2991ee authored tarafından Stephan Bergmann's avatar Stephan Bergmann

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
üst 8644d100
......@@ -181,7 +181,7 @@ service S2: XTest;
service S3 { interface XTest; };
singleton S4 { service S2; };
singleton S4 { service S3; };
module services {
......
......@@ -50,6 +50,11 @@ $(call gb_CustomTarget_get_target,idlc/parser_test) : \
$(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/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) \
......
......@@ -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;
};
......
......@@ -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);
}
}
......
#
# 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; };
......@@ -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;
};
......
......@@ -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;
};
......
......@@ -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.
......
......@@ -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;
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment