[Libreoffice-commits] core.git: cppu/qa idlc/CustomTarget_parser_test.mk idlc/inc idlc/source idlc/test offapi/com offapi/type_reference udkapi/com

Stephan Bergmann sbergman at redhat.com
Wed Apr 3 02:31:46 PDT 2013


 cppu/qa/cppumaker/types.idl                                     |    2 
 idlc/CustomTarget_parser_test.mk                                |    5 +
 idlc/inc/idlc/astservice.hxx                                    |    9 +++
 idlc/source/parser.y                                            |    3 -
 idlc/test/parser/oldstyle.tests                                 |   28 ++++++++++
 offapi/com/sun/star/script/vba/VBASpreadsheetEventProcessor.idl |    4 -
 offapi/com/sun/star/script/vba/VBATextEventProcessor.idl        |    4 -
 offapi/com/sun/star/sdb/Query.idl                               |    4 -
 offapi/type_reference/types.rdb                                 |binary
 udkapi/com/sun/star/loader/Java2.idl                            |    8 +-
 10 files changed, 55 insertions(+), 12 deletions(-)

New commits:
commit ce2991ee863e2e5faef95462242552515e1cf89c
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Apr 3 11:30:06 2013 +0200

    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

diff --git a/cppu/qa/cppumaker/types.idl b/cppu/qa/cppumaker/types.idl
index da5aa8f..2c0a055 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 1c3e44b..6be490a 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 6760462..d3e0b64 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 8729a63..e338e57 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 0000000..c6692b9
--- /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 6cb61f5..ac306b0 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 2535831..816163f 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 38f97e3..13cc935 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 b0c2c88..dd39969 100644
Binary files a/offapi/type_reference/types.rdb and b/offapi/type_reference/types.rdb differ
diff --git a/udkapi/com/sun/star/loader/Java2.idl b/udkapi/com/sun/star/loader/Java2.idl
index 49553b7..6e34177 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;
 };
 
 


More information about the Libreoffice-commits mailing list