compilerplugins/clang/referencecasting.cxx             |  385 +++++++++++++++++
 compilerplugins/clang/store/referencecasting.cxx       |  195 --------
 compilerplugins/clang/store/referencecasting.hxx       |   33 -
 compilerplugins/clang/test/referencecasting.cxx        |  150 ++++++
 solenv/CompilerTest_compilerplugins_clang.mk           |    1 
 sw/qa/extras/accessibility/accessible_relation_set.cxx |    2 
 sw/qa/extras/globalfilter/globalfilter.cxx             |    8 
 sw/qa/extras/mailmerge/mailmerge.cxx                   |    8 
 sw/qa/extras/odfexport/odfexport.cxx                   |   22 
 sw/qa/extras/ooxmlexport/ooxmlexport10.cxx             |   45 -
 sw/qa/extras/ooxmlexport/ooxmlexport11.cxx             |    6 
 sw/qa/extras/ooxmlexport/ooxmlexport12.cxx             |   40 -
 sw/qa/extras/ooxmlexport/ooxmlexport9.cxx              |   14 
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx               |   18 
 sw/qa/extras/ooxmlimport/ooxmlimport2.cxx              |    5 
 sw/qa/extras/rtfimport/rtfimport.cxx                   |   61 +-
 sw/qa/extras/uiwriter/uiwriter.cxx                     |   51 +-
 sw/qa/extras/uiwriter/uiwriter2.cxx                    |    8 
 sw/qa/extras/unowriter/unowriter.cxx                   |   14 
 sw/qa/extras/ww8export/ww8export.cxx                   |   48 +-
 sw/qa/extras/ww8export/ww8export2.cxx                  |   88 +--
 sw/qa/extras/ww8export/ww8export3.cxx                  |    2 
 22 files changed, 744 insertions(+), 460 deletions(-)

New commits:
commit c4bce5dafdfcb97586fab4bc3834daa6a27fec4c
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Thu Jul 18 14:57:37 2019 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Tue Jul 23 13:51:18 2019 +0200

    resurrect and improve loplugin:referencecasting
    
    Improve the plugin to avoid generating false+ with the special case of
    querying XInterface (what the code calls normalisation).
    
    Also ignore places where the querying is dealing with ambiguous base
    classes.
    
    Change-Id: I23b2b2fa6618328fafc4707b94c26582a462ea87
    Reviewed-on: https://gerrit.libreoffice.org/74993
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/compilerplugins/clang/referencecasting.cxx 
b/compilerplugins/clang/referencecasting.cxx
new file mode 100644
index 000000000000..e60177f4effb
--- /dev/null
+++ b/compilerplugins/clang/referencecasting.cxx
@@ -0,0 +1,385 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * Based on LLVM/Clang.
+ *
+ * This file is distributed under the University of Illinois Open Source
+ * License. See LICENSE.TXT for details.
+ *
+ */
+
+#include "plugin.hxx"
+#include "check.hxx"
+#include <iostream>
+
+/*
+This is a compile-time checker.
+
+Check for cases where we have
+ - two IDL interfaces A and B,
+ - B extends A
+ - we are converting a Reference<B> to a Reference<A> using UNO_QUERY
+
+This makes the code simpler and cheaper, because UNO_QUERY can be surprisingly 
expensive if used a lot.
+
+*/
+
+class ReferenceCasting : public loplugin::FilteringPlugin<ReferenceCasting>
+{
+public:
+    explicit ReferenceCasting(loplugin::InstantiationData const& data)
+        : FilteringPlugin(data)
+    {
+    }
+    void run() override
+    {
+        std::string fn(handler.getMainFileName());
+        loplugin::normalizeDotDotInFilePath(fn);
+        // macros
+        if (fn == SRCDIR "/dbaccess/source/ui/browser/formadapter.cxx")
+            return;
+        TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
+    }
+    bool VisitCXXConstructExpr(const CXXConstructExpr* cce);
+    bool VisitCXXMemberCallExpr(const CXXMemberCallExpr* mce);
+
+private:
+    bool CheckForUnnecessaryGet(const Expr*);
+};
+
+static const RecordType* extractTemplateType(const clang::Type*);
+static bool isDerivedFrom(const CXXRecordDecl* subtypeRecord, const 
CXXRecordDecl* baseRecord);
+
+bool ReferenceCasting::VisitCXXConstructExpr(const CXXConstructExpr* cce)
+{
+    // don't bother processing anything in the Reference.h file. Makes my life 
easier when debugging this.
+    StringRef aFileName = getFileNameOfSpellingLoc(
+        compiler.getSourceManager().getSpellingLoc(compat::getBeginLoc(cce)));
+    if (loplugin::isSamePathname(aFileName, SRCDIR 
"/include/com/sun/star/uno/Reference.h"))
+        return true;
+    if (loplugin::isSamePathname(aFileName, SRCDIR 
"/include/com/sun/star/uno/Reference.hxx"))
+        return true;
+
+    // look for calls to the Reference<T>(x, UNO_something) constructor
+    auto constructorClass = cce->getConstructor()->getParent();
+    if (!constructorClass->getIdentifier() || constructorClass->getName() != 
"Reference")
+        return true;
+
+    if (cce->getNumArgs() != 2)
+        return true;
+
+    if (CheckForUnnecessaryGet(cce->getArg(0)))
+        report(DiagnosticsEngine::Warning, "unnecessary get() call", 
compat::getBeginLoc(cce))
+            << cce->getSourceRange();
+
+    // ignore the up-casting constructor
+    if (!isa<EnumType>(cce->getConstructor()->getParamDecl(1)->getType()))
+        return true;
+
+    // extract the type parameter passed to the template
+    const RecordType* templateParamType = 
extractTemplateType(cce->getType().getTypePtr());
+    if (!templateParamType)
+        return true;
+
+    // extract the type of the first parameter passed to the constructor
+    const Expr* constructorArg0 = cce->getArg(0);
+    if (!constructorArg0)
+        return true;
+
+    // drill down the expression tree till we hit the bottom, because at the 
top, the type is BaseReference
+    const clang::Type* argType;
+    for (;;)
+    {
+        if (auto castExpr = dyn_cast<CastExpr>(constructorArg0))
+        {
+            constructorArg0 = castExpr->getSubExpr();
+            continue;
+        }
+        if (auto matTempExpr = 
dyn_cast<MaterializeTemporaryExpr>(constructorArg0))
+        {
+            constructorArg0 = matTempExpr->GetTemporaryExpr();
+            continue;
+        }
+        if (auto bindTempExpr = 
dyn_cast<CXXBindTemporaryExpr>(constructorArg0))
+        {
+            constructorArg0 = bindTempExpr->getSubExpr();
+            continue;
+        }
+        if (auto tempObjExpr = 
dyn_cast<CXXTemporaryObjectExpr>(constructorArg0))
+        {
+            constructorArg0 = tempObjExpr->getArg(0);
+            continue;
+        }
+        if (auto parenExpr = dyn_cast<ParenExpr>(constructorArg0))
+        {
+            constructorArg0 = parenExpr->getSubExpr();
+            continue;
+        }
+        argType = constructorArg0->getType().getTypePtr();
+        break;
+    }
+
+    const RecordType* argTemplateType = extractTemplateType(argType);
+    if (!argTemplateType)
+        return true;
+
+    CXXRecordDecl* templateParamRD = 
dyn_cast<CXXRecordDecl>(templateParamType->getDecl());
+    CXXRecordDecl* constructorArgRD = 
dyn_cast<CXXRecordDecl>(argTemplateType->getDecl());
+
+    // querying for XInterface (instead of doing an upcast) has special 
semantics,
+    // to check for UNO object equivalence.
+    if (templateParamRD->getName() == "XInterface")
+        return true;
+
+    // XShape is used in UNO aggregates in very "entertaining" ways, which 
means an UNO_QUERY
+    // can return a completely different object, e.g. see 
SwXShape::queryInterface
+    if (templateParamRD->getName() == "XShape")
+        return true;
+
+    if (auto declRefExpr = dyn_cast<DeclRefExpr>(cce->getArg(1)))
+    {
+        // no warning expected, used to reject null references
+        if (auto enumConstantDecl = 
dyn_cast<EnumConstantDecl>(declRefExpr->getDecl()))
+        {
+            if (enumConstantDecl->getName() == "UNO_SET_THROW")
+                return true;
+            if (enumConstantDecl->getName() == "UNO_QUERY_THROW")
+                return true;
+            if (enumConstantDecl->getName() == "SAL_NO_ACQUIRE")
+                return true;
+        }
+    }
+
+    if (constructorArgRD->Equals(templateParamRD)
+        || isDerivedFrom(constructorArgRD, templateParamRD))
+    {
+        report(DiagnosticsEngine::Warning,
+               "the source reference is already a subtype of the destination 
reference, just use =",
+               compat::getBeginLoc(cce))
+            << cce->getSourceRange();
+    }
+    return true;
+}
+
+bool ReferenceCasting::VisitCXXMemberCallExpr(const CXXMemberCallExpr* mce)
+{
+    // don't bother processing anything in the Reference.h file. Makes my life 
easier when debugging this.
+    StringRef aFileName = getFileNameOfSpellingLoc(
+        compiler.getSourceManager().getSpellingLoc(compat::getBeginLoc(mce)));
+    if (loplugin::isSamePathname(aFileName, SRCDIR 
"/include/com/sun/star/uno/Reference.h"))
+        return true;
+    if (loplugin::isSamePathname(aFileName, SRCDIR 
"/include/com/sun/star/uno/Reference.hxx"))
+        return true;
+
+    // look for calls to the Reference<T>.set(x, UNO_QUERY) constructor
+    auto method = mce->getMethodDecl();
+    if (!method || !method->getIdentifier() || method->getName() != "set")
+        return true;
+    if (mce->getNumArgs() != 2)
+        return true;
+
+    auto methodRecordDecl = 
dyn_cast<ClassTemplateSpecializationDecl>(mce->getRecordDecl());
+    if (!methodRecordDecl || !methodRecordDecl->getIdentifier()
+        || methodRecordDecl->getName() != "Reference")
+        return true;
+
+    if (CheckForUnnecessaryGet(mce->getArg(0)))
+        report(DiagnosticsEngine::Warning, "unnecessary get() call", 
compat::getBeginLoc(mce))
+            << mce->getSourceRange();
+
+    // extract the type parameter passed to the template
+    const RecordType* templateParamType
+        = 
dyn_cast<RecordType>(methodRecordDecl->getTemplateArgs()[0].getAsType());
+    if (!templateParamType)
+        return true;
+
+    // extract the type of the first parameter passed to the method
+    const Expr* arg0 = mce->getArg(0);
+    if (!arg0)
+        return true;
+
+    // drill down the expression tree till we hit the bottom, because at the 
top, the type is BaseReference
+    const clang::Type* argType;
+    for (;;)
+    {
+        if (auto castExpr = dyn_cast<CastExpr>(arg0))
+        {
+            arg0 = castExpr->getSubExpr();
+            continue;
+        }
+        if (auto matTempExpr = dyn_cast<MaterializeTemporaryExpr>(arg0))
+        {
+            arg0 = matTempExpr->GetTemporaryExpr();
+            continue;
+        }
+        if (auto bindTempExpr = dyn_cast<CXXBindTemporaryExpr>(arg0))
+        {
+            arg0 = bindTempExpr->getSubExpr();
+            continue;
+        }
+        if (auto tempObjExpr = dyn_cast<CXXTemporaryObjectExpr>(arg0))
+        {
+            arg0 = tempObjExpr->getArg(0);
+            continue;
+        }
+        if (auto parenExpr = dyn_cast<ParenExpr>(arg0))
+        {
+            arg0 = parenExpr->getSubExpr();
+            continue;
+        }
+        argType = arg0->getType().getTypePtr();
+        break;
+    }
+
+    const RecordType* argTemplateType = extractTemplateType(argType);
+    if (!argTemplateType)
+        return true;
+
+    CXXRecordDecl* templateParamRD = 
dyn_cast<CXXRecordDecl>(templateParamType->getDecl());
+    CXXRecordDecl* methodArgRD = 
dyn_cast<CXXRecordDecl>(argTemplateType->getDecl());
+
+    // querying for XInterface (instead of doing an upcast) has special 
semantics,
+    // to check for UNO object equivalence.
+    if (templateParamRD->getName() == "XInterface")
+        return true;
+
+    // XShape is used in UNO aggregates in very "entertaining" ways, which 
means an UNO_QUERY
+    // can return a completely different object, e.g. see 
SwXShape::queryInterface
+    if (templateParamRD->getName() == "XShape")
+        return true;
+
+    if (auto declRefExpr = dyn_cast<DeclRefExpr>(mce->getArg(1)))
+    {
+        // no warning expected, used to reject null references
+        if (auto enumConstantDecl = 
dyn_cast<EnumConstantDecl>(declRefExpr->getDecl()))
+        {
+            if (enumConstantDecl->getName() == "UNO_SET_THROW")
+                return true;
+            if (enumConstantDecl->getName() == "UNO_QUERY_THROW")
+                return true;
+            if (enumConstantDecl->getName() == "SAL_NO_ACQUIRE")
+                return true;
+        }
+    }
+
+    if (methodArgRD->Equals(templateParamRD) || isDerivedFrom(methodArgRD, 
templateParamRD))
+    {
+        report(DiagnosticsEngine::Warning,
+               "the source reference is already a subtype of the destination 
reference, just use =",
+               compat::getBeginLoc(mce))
+            << mce->getSourceRange();
+    }
+    return true;
+}
+
+/**
+    Check for
+        Reference<T>(x.get(), UNO_QUERY)
+    because sometimes simplifying that means the main purpose of this plugin 
can kick in.
+ */
+bool ReferenceCasting::CheckForUnnecessaryGet(const Expr* expr)
+{
+    expr = expr->IgnoreImplicit();
+    auto cxxMemberCallExpr = dyn_cast<CXXMemberCallExpr>(expr);
+    if (!cxxMemberCallExpr)
+        return false;
+    auto methodDecl = cxxMemberCallExpr->getMethodDecl();
+    if (!methodDecl)
+        return false;
+    if (!methodDecl->getIdentifier() || methodDecl->getName() != "get")
+        return false;
+
+    if (!loplugin::TypeCheck(expr->getType()).Pointer())
+        return false;
+    if 
(!loplugin::DeclCheck(methodDecl->getParent()).Class("Reference").Namespace("uno"))
+        return false;
+
+    StringRef aFileName = getFileNameOfSpellingLoc(
+        compiler.getSourceManager().getSpellingLoc(compat::getBeginLoc(expr)));
+    if (loplugin::isSamePathname(aFileName, SRCDIR 
"/cppu/qa/test_reference.cxx"))
+        return false;
+
+    return true;
+}
+
+static const RecordType* extractTemplateType(const clang::Type* cceType)
+{
+    // check for passing raw pointer to interface case
+    if (cceType->isPointerType())
+    {
+        auto pointeeType = cceType->getPointeeType();
+        if (auto elaboratedType = dyn_cast<ElaboratedType>(pointeeType))
+            pointeeType = elaboratedType->desugar();
+        if (auto recordType = dyn_cast<RecordType>(pointeeType))
+            return recordType;
+    }
+
+    if (auto elaboratedType = dyn_cast<ElaboratedType>(cceType))
+        cceType = elaboratedType->desugar().getTypePtr();
+    auto cceTST = dyn_cast<TemplateSpecializationType>(cceType);
+    if (!cceTST)
+        return NULL;
+    if (cceTST->getNumArgs() != 1)
+        return NULL;
+    const TemplateArgument& cceTA = cceTST->getArg(0);
+    const clang::Type* templateParamType = cceTA.getAsType().getTypePtr();
+    if (auto elaboratedType = dyn_cast<ElaboratedType>(templateParamType))
+        templateParamType = elaboratedType->desugar().getTypePtr();
+    return dyn_cast<RecordType>(templateParamType);
+}
+
+static int derivedFromCount(QualType qt, const CXXRecordDecl* baseRecord);
+
+static int derivedFromCount(const CXXRecordDecl* subtypeRecord, const 
CXXRecordDecl* baseRecord)
+{
+    if (!subtypeRecord->hasDefinition())
+        return 0;
+    int derivedCount = 0;
+    for (auto it = subtypeRecord->bases_begin(); it != 
subtypeRecord->bases_end(); ++it)
+    {
+        derivedCount += derivedFromCount(it->getType(), baseRecord);
+        if (derivedCount > 1)
+            return derivedCount;
+    }
+    for (auto it = subtypeRecord->vbases_begin(); it != 
subtypeRecord->vbases_end(); ++it)
+    {
+        derivedCount += derivedFromCount(it->getType(), baseRecord);
+        if (derivedCount > 1)
+            return derivedCount;
+    }
+    return derivedCount;
+}
+
+static int derivedFromCount(QualType qt, const CXXRecordDecl* baseRecord)
+{
+    int derivedCount = 0;
+    auto type = qt.getTypePtr();
+    if (auto elaboratedType = dyn_cast<ElaboratedType>(type))
+        type = elaboratedType->desugar().getTypePtr();
+    if (auto recordType = dyn_cast<RecordType>(type))
+    {
+        if (auto cxxRecordDecl = 
dyn_cast<CXXRecordDecl>(recordType->getDecl()))
+        {
+            if (cxxRecordDecl->Equals(baseRecord))
+                derivedCount++;
+            derivedCount += derivedFromCount(cxxRecordDecl, baseRecord);
+        }
+    }
+    return derivedCount;
+}
+
+/**
+  Implement my own isDerived because we can't always see all the definitions 
of the classes involved.
+  which will cause an assert with the normal clang isDerivedFrom code.
+*/
+static bool isDerivedFrom(const CXXRecordDecl* subtypeRecord, const 
CXXRecordDecl* baseRecord)
+{
+    // if there is more than one case, then we have an ambigous conversion, 
and we can't change the code
+    // to use the upcasting constructor.
+    return derivedFromCount(subtypeRecord, baseRecord) == 1;
+}
+
+loplugin::Plugin::Registration<ReferenceCasting> X2("referencecasting");
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/compilerplugins/clang/store/referencecasting.cxx 
b/compilerplugins/clang/store/referencecasting.cxx
deleted file mode 100644
index ed74b0b6e14a..000000000000
--- a/compilerplugins/clang/store/referencecasting.cxx
+++ /dev/null
@@ -1,195 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * Based on LLVM/Clang.
- *
- * This file is distributed under the University of Illinois Open Source
- * License. See LICENSE.TXT for details.
- *
- */
-
-#include "referencecasting.hxx"
-
-#include <clang/AST/Attr.h>
-#include <iostream>
-
-namespace loplugin
-{
-
-/*
-This is a compile-time checker.
-
-Check for cases where we have
- - two IDL interfaces A and B,
- - B extends A
- - we are converting a Reference<B> to a Reference<A>
-
-Note that it generates the occasional false positive.
-
-Also, it makes clang3.2 crash on about 4 files in the LO codebase.
-I have logged a bug here:
-  http://llvm.org/bugs/show_bug.cgi?id=15902
-
-*/
-ReferenceCasting::ReferenceCasting( CompilerInstance& compiler )
-    : FilteringPlugin( compiler )
-{
-}
-
-void ReferenceCasting::run()
-{
-    TraverseDecl( compiler.getASTContext().getTranslationUnitDecl());
-}
-
-// This:
-// static void example_method()
-// {
-//     css::uno::Reference<B> b;
-//     css::uno::Reference<A>(b, css::uno::UNO_QUERY);
-// }
-// Compiles to this AST:
-// (CompoundStmt 0x205d430 
</noel-extra1/libo-clang/compilerplugins/clang/noel1.cxx:17:1, line:20:1>
-//   (DeclStmt 0x20580a8 <line:18:5, col:32>
-//     (0x20530e0 "css::uno::Reference<B> refB =
-//       (CXXConstructExpr 0x2058078 <col:28> 'css::uno::Reference<B>':'class 
com::sun::star::uno::Reference<class B>''void(void)')"))
-//   (DeclStmt 0x205d418 <line:19:5, col:59>
-//     (0x2058310 "css::uno::Reference<A> refA =
-//       (CXXConstructExpr 0x205d3d8 <col:28, col:58> 
'css::uno::Reference<A>':'class com::sun::star::uno::Reference<class A>''void 
(const class com::sun::star::uno::BaseReference &, enum 
com::sun::star::uno::UnoReference_Query)'
-//         (ImplicitCastExpr 0x205d3c0 <col:33> 'const class 
com::sun::star::uno::BaseReference' lvalue <NoOp>
-//           (ImplicitCastExpr 0x205d3a0 <col:33> 'class 
com::sun::star::uno::BaseReference' lvalue <DerivedToBase (BaseReference)>
-//             (DeclRefExpr 0x20582a0 <col:33> 'css::uno::Reference<B>':'class 
com::sun::star::uno::Reference<class B>' lvalue Var 0x20530e0 'refB' 
'css::uno::Reference<B>':'class com::sun::star::uno::Reference<class B>')))
-//         (DeclRefExpr 0x2058398 <col:39, col:49> 'enum 
com::sun::star::uno::UnoReference_Query' EnumConstant 0x1831de0 'UNO_QUERY' 
'enum com::sun::star::uno::UnoReference_Query'))")))
-//
-//
-// This:
-// static void example_method1(css::uno::Reference<A>)
-// {
-// }
-// static void example_method2()
-// {
-//     css::uno::Reference<B> refB;
-//     example_method1(css::uno::Reference<A>(refB, css::uno::UNO_QUERY));
-// }
-//  Compiles to this AST:
-// static void example_method1(css::uno::Reference<A>) (CompoundStmt 0x2a74ee8 
</noel-extra1/libo-clang/compilerplugins/clang/noel1.cxx:17:1, line:18:1>)
-// static void example_method2() (CompoundStmt 0x2a7a650 
</noel-extra1/libo-clang/compilerplugins/clang/noel1.cxx:21:1, line:24:1>
-//  (DeclStmt 0x2a7a1a8 <line:22:5, col:32>
-//    (0x2a751e0 "css::uno::Reference<B> refB =
-//      (CXXConstructExpr 0x2a7a178 <col:28> 'css::uno::Reference<B>':'class 
com::sun::star::uno::Reference<class B>''void(void)')"))
-//  (ExprWithCleanups 0x2a7a638 <line:23:5, col:70> 'void'
-//    (CallExpr 0x2a7a570 <col:5, col:70> 'void'
-//      (ImplicitCastExpr 0x2a7a558 <col:5> 'void (*)(css::uno::Reference<A>)' 
<FunctionToPointerDecay>
-//        (DeclRefExpr 0x2a7a4d8 <col:5> 'void (css::uno::Reference<A>)' 
lvalue Function 0x2a6ff00 'example_method1' 'void (css::uno::Reference<A>)'))
-//      (CXXBindTemporaryExpr 0x2a7a618 <col:21, col:69> 
'css::uno::Reference<A>':'class com::sun::star::uno::Reference<class A>' 
(CXXTemporary 0x2a7a610)
-//        (CXXConstructExpr 0x2a7a5d8 <col:21, col:69> 
'css::uno::Reference<A>':'class com::sun::star::uno::Reference<class A>''void 
(const Reference<class A> &)' elidable
-//          (MaterializeTemporaryExpr 0x2a7a5c0 <col:21, col:69> 'const 
Reference<class A>':'const class com::sun::star::uno::Reference<class A>' lvalue
-//            (ImplicitCastExpr 0x2a7a5a8 <col:21, col:69> 'const 
Reference<class A>':'const class com::sun::star::uno::Reference<class A>' <NoOp>
-//              (CXXBindTemporaryExpr 0x2a7a4b8 <col:21, col:69> 
'css::uno::Reference<A>':'class com::sun::star::uno::Reference<class A>' 
(CXXTemporary 0x2a7a4b0)
-//                (CXXTemporaryObjectExpr 0x2a7a460 <col:21, col:69> 
'css::uno::Reference<A>':'class com::sun::star::uno::Reference<class A>''void 
(const class com::sun::star::uno::BaseReference &, enum 
com::sun::star::uno::UnoReference_Query)'
-//                  (ImplicitCastExpr 0x2a7a448 <col:44> 'const class 
com::sun::star::uno::BaseReference' lvalue <NoOp>
-//                    (ImplicitCastExpr 0x2a7a428 <col:44> 'class 
com::sun::star::uno::BaseReference' lvalue <DerivedToBase (BaseReference)>
-//                      (DeclRefExpr 0x2a7a340 <col:44> 
'css::uno::Reference<B>':'class com::sun::star::uno::Reference<class B>' lvalue 
Var 0x2a751e0 'refB' 'css::uno::Reference<B>':'class 
com::sun::star::uno::Reference<class B>')))
-//                  (DeclRefExpr 0x2a7a398 <col:50, col:60> 'enum 
com::sun::star::uno::UnoReference_Query' EnumConstant 0x224ee20 'UNO_QUERY' 
'enum com::sun::star::uno::UnoReference_Query'))))))))))
-
-static const Type* extractTemplateType(Expr* cce);
-
-bool ReferenceCasting::VisitCXXConstructExpr( CXXConstructExpr* cce )
-{
-    // don't bother processing anything in the Reference.h file. Makes my life 
easier when debugging this.
-    if( StringRef(compiler.getSourceManager().getPresumedLoc( 
cce->getSourceRange().getBegin() )).find( "Reference.h" ) != StringRef::npos )
-        return true;
-
-    // look for calls to the Reference<T>(x,UNO_something) constructor
-    if( cce->getConstructor()->getNameInfo().getName().getAsString() != 
"Reference" )
-        return true;
-
-    if( cce->getNumArgs() != 2 )
-        return true;
-
-    // extract the type parameter passed to the template
-    const Type * templateParamType = extractTemplateType(cce);
-    if ( !templateParamType )
-        return true;
-
-    // extract the type of the first parameter passed to the constructor
-    Expr* constructorArg0 = cce->getArg(0);
-    if( !constructorArg0 )
-       return true;
-
-    // ignore the Reference(XInterface*,...) constructor
-    if( constructorArg0->getType()->isPointerType() )
-       return true;
-
-    // drill down the expression tree till we hit the bottom
-    DeclRefExpr* constructorSubArg2;
-    Expr* constructorArg0SubExpr = constructorArg0;
-    for(;;)
-    {
-        // if we've hit the member expression we want, break
-        constructorSubArg2 = dyn_cast<DeclRefExpr>( constructorArg0SubExpr );
-        if( constructorSubArg2 )
-            break;
-        CastExpr* tmp1 = dyn_cast<CastExpr>( constructorArg0SubExpr );
-        if( tmp1 ) {
-            constructorArg0SubExpr = tmp1->getSubExpr();
-            continue;
-        }
-        MaterializeTemporaryExpr* tmp2 = dyn_cast<MaterializeTemporaryExpr>( 
constructorArg0SubExpr );
-        if( tmp2 ) {
-            constructorArg0SubExpr = tmp2->GetTemporaryExpr();
-            continue;
-        }
-        CXXBindTemporaryExpr* tmp3 = dyn_cast<CXXBindTemporaryExpr>( 
constructorArg0SubExpr );
-        if( tmp3 ) {
-            constructorArg0SubExpr = tmp3->getSubExpr();
-            continue;
-        }
-        CXXTemporaryObjectExpr* tmp4 = dyn_cast<CXXTemporaryObjectExpr>( 
constructorArg0SubExpr );
-        if( tmp4 ) {
-            constructorArg0SubExpr = tmp4->getArg(0);
-            continue;
-        }
-        return true;
-    }
-
-    const Type * tmp3 = extractTemplateType( constructorSubArg2 );
-    if ( !tmp3 )
-        return true;
-
-    const RecordType* templateParamRT = dyn_cast<RecordType>( 
templateParamType );
-    const RecordType* constructorArgRT = dyn_cast<RecordType>( tmp3 );
-    if( !templateParamRT || !constructorArgRT )
-       return true;
-
-    CXXRecordDecl* templateParamRD = dyn_cast<CXXRecordDecl>( 
templateParamRT->getDecl() );
-    CXXRecordDecl* constructorArgRD = dyn_cast<CXXRecordDecl>( 
constructorArgRT->getDecl() );
-
-    if (constructorArgRD->Equals(templateParamRD) || 
constructorArgRD->isDerivedFrom(templateParamRD))
-        report( DiagnosticsEngine::Warning,
-                "the source reference is already a subtype of the destination 
reference",
-                cce->getLocStart()) // and the exact position where the 
message should point
-                    << cce->getSourceRange(); // and the full return statement 
to highlight (optional)
-
-    return true;
-}
-
-static const Type* extractTemplateType(Expr* cce)
-{
-    QualType cceQT = cce->getType();
-    const Type* cceType = cceQT.getTypePtr();
-    const TemplateSpecializationType* cceTST = 
dyn_cast<TemplateSpecializationType>( cceType );
-    if( !cceTST )
-        return NULL;
-    if( cceTST->getNumArgs() != 1 )
-        return NULL;
-    const TemplateArgument & cceTA = cceTST->getArg(0);
-    QualType templateParamQT = cceTA.getAsType();
-    return templateParamQT.getTypePtr();
-}
-
-static Plugin::Registration< ReferenceCasting > X( "referencecasting" );
-
-} // namespace
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/compilerplugins/clang/store/referencecasting.hxx 
b/compilerplugins/clang/store/referencecasting.hxx
deleted file mode 100644
index 3c41b773e0f0..000000000000
--- a/compilerplugins/clang/store/referencecasting.hxx
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * Based on LLVM/Clang.
- *
- * This file is distributed under the University of Illinois Open Source
- * License. See LICENSE.TXT for details.
- *
- */
-
-#ifndef REFERENCECASTING_H
-#define REFERENCECASTING_H
-
-#include "plugin.hxx"
-
-namespace loplugin
-{
-
-class ReferenceCasting
-    : public FilteringPlugin< ReferenceCasting >
-    {
-    public:
-        explicit ReferenceCasting( CompilerInstance& compiler );
-        virtual void run() override;
-        bool VisitCXXConstructExpr( CXXConstructExpr* cce );
-    };
-
-} // namespace
-
-#endif // REFERENCECASTING_H
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/compilerplugins/clang/test/referencecasting.cxx 
b/compilerplugins/clang/test/referencecasting.cxx
new file mode 100644
index 000000000000..87324bb86fd6
--- /dev/null
+++ b/compilerplugins/clang/test/referencecasting.cxx
@@ -0,0 +1,150 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; 
fill-column: 100 -*- */
+/*
+ * 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/.
+ */
+
+#include "sal/config.h"
+
+#include "com/sun/star/uno/XInterface.hpp"
+#include "com/sun/star/io/XStreamListener.hpp"
+#include "com/sun/star/lang/XTypeProvider.hpp"
+#include "com/sun/star/lang/XComponent.hpp"
+#include "cppuhelper/weak.hxx"
+
+void test1(const css::uno::Reference<css::io::XStreamListener>& a)
+{
+    // expected-error@+1 {{the source reference is already a subtype of the 
destination reference, just use = [loplugin:referencecasting]}}
+    css::uno::Reference<css::lang::XEventListener> b(a, css::uno::UNO_QUERY);
+}
+
+namespace test2
+{
+css::uno::Reference<css::io::XStreamListener> getListener();
+
+void test()
+{
+    // expected-error@+1 {{the source reference is already a subtype of the 
destination reference, just use = [loplugin:referencecasting]}}
+    css::uno::Reference<css::lang::XEventListener> b(getListener(), 
css::uno::UNO_QUERY);
+}
+}
+
+namespace test3
+{
+void callListener(css::uno::Reference<css::uno::XInterface> const&);
+
+void test(css::uno::Reference<css::io::XStreamListener> const& l)
+{
+    // expected-error@+1 {{the source reference is already a subtype of the 
destination reference, just use = [loplugin:referencecasting]}}
+    callListener(css::uno::Reference<css::lang::XEventListener>(l, 
css::uno::UNO_QUERY));
+}
+}
+
+void test4(const css::uno::Reference<css::io::XStreamListener>& a)
+{
+    // no warning expected, used to reject null references
+    css::uno::Reference<css::lang::XEventListener> b(a, 
css::uno::UNO_SET_THROW);
+}
+
+// no warning expected
+namespace test5
+{
+void test(css::uno::Reference<css::io::XStreamListener> l)
+{
+    css::uno::Reference<css::uno::XInterface> a = l;
+}
+}
+
+namespace test6
+{
+void test(css::uno::Reference<css::io::XStreamListener> l)
+{
+    css::uno::Reference<css::lang::XEventListener> a;
+    // expected-error@+1 {{the source reference is already a subtype of the 
destination reference, just use = [loplugin:referencecasting]}}
+    a.set(l, css::uno::UNO_QUERY);
+}
+}
+
+namespace test7
+{
+void test(css::uno::Reference<css::io::XStreamListener> l)
+{
+    // expected-error@+1 {{unnecessary get() call [loplugin:referencecasting]}}
+    css::uno::Reference<css::lang::XEventListener> a(l.get(), 
css::uno::UNO_QUERY);
+    // expected-error@+1 {{unnecessary get() call [loplugin:referencecasting]}}
+    a.set(l.get(), css::uno::UNO_QUERY);
+}
+}
+
+namespace test8
+{
+void test(css::io::XStreamListener* l)
+{
+    // expected-error@+1 {{the source reference is already a subtype of the 
destination reference, just use = [loplugin:referencecasting]}}
+    css::uno::Reference<css::lang::XEventListener> a(l, css::uno::UNO_QUERY);
+    // expected-error@+1 {{the source reference is already a subtype of the 
destination reference, just use = [loplugin:referencecasting]}}
+    a.set(l, css::uno::UNO_QUERY);
+}
+}
+
+// check for looking through casts
+namespace test9
+{
+class StatusbarController : public css::io::XStreamListener, public 
::cppu::OWeakObject
+{
+};
+
+void test(StatusbarController* pController)
+{
+    css::uno::Reference<css::io::XStreamListener> xController;
+    // expected-error@+1 {{the source reference is already a subtype of the 
destination reference, just use = [loplugin:referencecasting]}}
+    xController.set(static_cast<::cppu::OWeakObject*>(pController), 
css::uno::UNO_QUERY);
+}
+}
+
+// no warning expected when we have an ambiguous base
+namespace test10
+{
+class Foo : public css::lang::XTypeProvider, public css::lang::XComponent
+{
+    virtual ~Foo();
+    void bar()
+    {
+        css::uno::Reference<css::lang::XEventListener> xSource(
+            static_cast<css::lang::XTypeProvider*>(this), css::uno::UNO_QUERY);
+    }
+};
+}
+
+// no warning expected for SAL_NO_ACQUIRE
+namespace test11
+{
+void test(css::io::XStreamListener* l)
+{
+    css::uno::Reference<css::lang::XEventListener> a(l, SAL_NO_ACQUIRE);
+    a.set(l, SAL_NO_ACQUIRE);
+}
+}
+
+// no warning expected: querying for XInterface (instead of doing an upcast) 
has special semantics,
+// to check for UNO object equivalence.
+void test12(const css::uno::Reference<css::io::XStreamListener>& a)
+{
+    css::uno::Reference<css::uno::XInterface> b(a, css::uno::UNO_QUERY);
+}
+
+// no warning expected: querying for XInterface (instead of doing an upcast) 
has special semantics,
+// to check for UNO object equivalence.
+struct Test13
+{
+    css::uno::Reference<css::uno::XInterface> m_xNormalizedIFace;
+    void newObject(const css::uno::Reference<css::uno::XInterface>& _rxIFace)
+    {
+        m_xNormalizedIFace.set(_rxIFace, css::uno::UNO_QUERY);
+    }
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/solenv/CompilerTest_compilerplugins_clang.mk 
b/solenv/CompilerTest_compilerplugins_clang.mk
index c3a9054a6931..d70c41faead6 100644
--- a/solenv/CompilerTest_compilerplugins_clang.mk
+++ b/solenv/CompilerTest_compilerplugins_clang.mk
@@ -48,6 +48,7 @@ $(eval $(call 
gb_CompilerTest_add_exception_objects,compilerplugins_clang, \
     compilerplugins/clang/test/redundantinline \
     compilerplugins/clang/test/redundantpointerops \
     compilerplugins/clang/test/refcounting \
+    compilerplugins/clang/test/referencecasting \
     compilerplugins/clang/test/salbool \
     compilerplugins/clang/test/salcall \
     compilerplugins/clang/test/sallogareas \
diff --git a/sw/qa/extras/accessibility/accessible_relation_set.cxx 
b/sw/qa/extras/accessibility/accessible_relation_set.cxx
index b544096a37f1..9efcc8ec060c 100644
--- a/sw/qa/extras/accessibility/accessible_relation_set.cxx
+++ b/sw/qa/extras/accessibility/accessible_relation_set.cxx
@@ -55,8 +55,6 @@ AccessibilityTools::getAccessibleObjectForRole(
 
     if ((ac->getAccessibleRole() == role) && isShowing)
     {
-        css::uno::Reference<css::accessibility::XAccessible> 
SearchedAccessible(xacc,
-                                                                               
 uno::UNO_QUERY);
         return ac;
     }
     else
diff --git a/sw/qa/extras/globalfilter/globalfilter.cxx 
b/sw/qa/extras/globalfilter/globalfilter.cxx
index 92c64c878a38..f9a8acf615f4 100644
--- a/sw/qa/extras/globalfilter/globalfilter.cxx
+++ b/sw/qa/extras/globalfilter/globalfilter.cxx
@@ -109,7 +109,7 @@ void Test::testEmbeddedGraphicRoundtrip()
 
         // Check whether graphic exported well after it was swapped out
         uno::Reference<drawing::XDrawPageSupplier> 
xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
-        uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+        uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
 
         const OString sFailedMessage = OString("Failed on filter: ") + 
rFilterName.toUtf8();
         CPPUNIT_ASSERT_EQUAL_MESSAGE(sFailedMessage.getStr(), 
static_cast<sal_Int32>(2), xDraws->getCount());
@@ -246,7 +246,7 @@ void Test::testImageWithSpecialID()
 
         // Check whether graphic exported well
         uno::Reference<drawing::XDrawPageSupplier> 
xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
-        uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+        uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
 
         const OString sFailedMessage = OString("Failed on filter: ") + 
rFilterName.toUtf8();
         CPPUNIT_ASSERT_EQUAL_MESSAGE(sFailedMessage.getStr(), 
static_cast<sal_Int32>(2), xDraws->getCount());
@@ -344,7 +344,7 @@ void Test::testGraphicShape()
 
         // Check whether graphic exported well
         uno::Reference<drawing::XDrawPageSupplier> 
xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
-        uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+        uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
 
         const OString sFailedMessage = OString("Failed on filter: ") + 
rFilterName.toUtf8();
         CPPUNIT_ASSERT_EQUAL_MESSAGE(sFailedMessage.getStr(), 
static_cast<sal_Int32>(2), xDraws->getCount());
@@ -801,7 +801,7 @@ void Test::testSkipImages()
 
         // Check shapes (images, textboxes, custom shapes)
         uno::Reference<drawing::XDrawPageSupplier> 
xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
-        uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+        uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
         uno::Reference<drawing::XShape> xShape;
         uno::Reference<graphic::XGraphic> xGraphic;
         uno::Reference< beans::XPropertySet > XPropSet;
diff --git a/sw/qa/extras/mailmerge/mailmerge.cxx 
b/sw/qa/extras/mailmerge/mailmerge.cxx
index 6c5a2de4d495..139a13a24dd7 100644
--- a/sw/qa/extras/mailmerge/mailmerge.cxx
+++ b/sw/qa/extras/mailmerge/mailmerge.cxx
@@ -126,7 +126,7 @@ public:
             uno::Reference< sdbc::XRowSet > xRowSet( xInstance, uno::UNO_QUERY 
);
             if (xRowSet.is())
                 xRowSet->execute(); // build ResultSet from properties
-            xCurResultSet.set( xRowSet, uno::UNO_QUERY );
+            xCurResultSet = xRowSet;
             assert( xCurResultSet.is() && "failed to build ResultSet" );
         }
         return xCurResultSet;
@@ -366,7 +366,7 @@ DECLARE_SHELL_MAILMERGE_TEST(testMultiPageAnchoredDraws, 
"multiple-page-anchored
     CPPUNIT_ASSERT_EQUAL(sal_uInt16(8), nPhysPages);
 
     uno::Reference<drawing::XDrawPageSupplier> 
xDrawPageSupplier(mxMMComponent, uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
     CPPUNIT_ASSERT_EQUAL(sal_Int32(8), xDraws->getCount());
 
     std::set<sal_uInt16> pages;
@@ -393,7 +393,7 @@ DECLARE_FILE_MAILMERGE_TEST(testMissingDefaultLineColor, 
"missing-default-line-c
     // The document was created by LO version which didn't write out the 
default value for line color
     // (see XMLGraphicsDefaultStyle::SetDefaults()).
     uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
     uno::Reference<beans::XPropertySet> xPropertySet(xDraws->getByIndex(0), 
uno::UNO_QUERY);
     // Lines do not have a line color.
     CPPUNIT_ASSERT( !xPropertySet->getPropertySetInfo()->hasPropertyByName( 
"LineColor" ));
@@ -700,7 +700,7 @@ DECLARE_SHELL_MAILMERGE_TEST(testTdf118113, 
"tdf118113.odt", "tdf118113.ods", "t
 
     // verify that there is a text box for each data record
     uno::Reference<drawing::XDrawPageSupplier> 
xDrawPageSupplier(mxMMComponent, uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
     CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xDraws->getCount());
 
     // verify the text box for each data record is anchored to the first page 
of the given data record's pages
diff --git a/sw/qa/extras/odfexport/odfexport.cxx 
b/sw/qa/extras/odfexport/odfexport.cxx
index 0d7253924d50..99d6d8059c59 100644
--- a/sw/qa/extras/odfexport/odfexport.cxx
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -575,7 +575,7 @@ DECLARE_ODFEXPORT_TEST(testFdo79358, "fdo79358.odt")
 {
     // the boolean properties of the index were not exported properly
     uno::Reference<text::XDocumentIndexesSupplier> xIndexSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xIndexes(xIndexSupplier->getDocumentIndexes(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xIndexes = 
xIndexSupplier->getDocumentIndexes();
     uno::Reference<text::XDocumentIndex> xTOCIndex(xIndexes->getByIndex(0), 
uno::UNO_QUERY);
     uno::Reference<beans::XPropertySet> xTOCProps(xTOCIndex, uno::UNO_QUERY);
     CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTOCProps, 
"CreateFromOutline"));
@@ -637,8 +637,8 @@ 
DECLARE_ODFEXPORT_TEST(testDuplicateCrossRefHeadingBookmark, "CrossRefHeadingBoo
 
     uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent,
         uno::UNO_QUERY);
-    uno::Reference<container::XNameAccess> xBookmarks(
-        xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xBookmarks =
+        xBookmarksSupplier->getBookmarks();
     uno::Reference<text::XTextContent> xBookmark1(
         xBookmarks->getByName("__RefHeading__8284_1826734303"), 
uno::UNO_QUERY);
     CPPUNIT_ASSERT(xBookmark1.is());
@@ -721,7 +721,7 @@ DECLARE_ODFEXPORT_TEST(testStylePageNumber, 
"ooo321_stylepagenumber.odt")
     CPPUNIT_ASSERT_EQUAL(OUString("Right Page"), getProperty<OUString>(xPara0, 
"PageDescName"));
     CPPUNIT_ASSERT_EQUAL(uno::Any(), 
xPara0->getPropertyValue("PageNumberOffset"));
 
-    uno::Reference<container::XNameAccess> 
xParaStyles(getStyles("ParagraphStyles"), uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xParaStyles = 
getStyles("ParagraphStyles");
     uno::Reference<beans::XPropertySet> 
xStyle1(xParaStyles->getByName("stylewithbreak1"), uno::UNO_QUERY);
     CPPUNIT_ASSERT_EQUAL(OUString("Right Page"), 
getProperty<OUString>(xStyle1, "PageDescName"));
     CPPUNIT_ASSERT_EQUAL(sal_Int16(1), getProperty<sal_Int16>(xStyle1, 
"PageNumberOffset"));
@@ -864,7 +864,7 @@ DECLARE_ODFEXPORT_TEST(testCharacterBorder, 
"charborder.odt")
 
         // Check character style
         {
-            uno::Reference< container::XNameAccess > 
xStyleFamily(getStyles("CharacterStyles"), uno::UNO_QUERY);
+            uno::Reference< container::XNameAccess > xStyleFamily = 
getStyles("CharacterStyles");
             uno::Reference < beans::XPropertySet > 
xStyleSet(xStyleFamily->getByName("CharDiffBor"), uno::UNO_QUERY);
 
             // Top border
@@ -1149,8 +1149,8 @@ DECLARE_ODFEXPORT_TEST(testWhitespace, "whitespace.odt")
         // what a stupid idea to require recursively enumerating this
         uno::Reference<container::XEnumerationAccess> xMeta(
             getProperty<uno::Reference<text::XTextContent>>(xPortion, 
"InContentMetadata"), uno::UNO_QUERY);
-        uno::Reference<container::XEnumeration> xMetaPortions(
-            xMeta->createEnumeration(), uno::UNO_QUERY);
+        uno::Reference<container::XEnumeration> xMetaPortions =
+            xMeta->createEnumeration();
         uno::Reference<text::XTextRange> xMP(xMetaPortions->nextElement(), 
uno::UNO_QUERY);
         CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xMP, 
"TextPortionType"));
         CPPUNIT_ASSERT_EQUAL(OUString(" "), xMP->getString());
@@ -1172,8 +1172,8 @@ DECLARE_ODFEXPORT_TEST(testWhitespace, "whitespace.odt")
         // what a stupid idea to require recursively enumerating this
         uno::Reference<container::XEnumerationAccess> xMeta(
             getProperty<uno::Reference<text::XTextContent>>(xPortion, 
"TextField"), uno::UNO_QUERY);
-        uno::Reference<container::XEnumeration> xMetaPortions(
-            xMeta->createEnumeration(), uno::UNO_QUERY);
+        uno::Reference<container::XEnumeration> xMetaPortions =
+            xMeta->createEnumeration();
         uno::Reference<text::XTextRange> xMP(xMetaPortions->nextElement(), 
uno::UNO_QUERY);
         CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xMP, 
"TextPortionType"));
         CPPUNIT_ASSERT_EQUAL(OUString(" "), xMP->getString());
@@ -2139,7 +2139,7 @@ DECLARE_ODFEXPORT_TEST(tdf101856_overlapped, 
"tdf101856_overlapped.odt")
     // get bookmark interface
     uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<container::XIndexAccess> 
xBookmarksByIdx(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
-    uno::Reference<container::XNameAccess> 
xBookmarksByName(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xBookmarksByName = 
xBookmarksSupplier->getBookmarks();
 
     // check: we have 2 bookmarks
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), 
xBookmarksByIdx->getCount());
@@ -2163,7 +2163,7 @@ DECLARE_ODFEXPORT_TEST(tdf101856, "tdf101856.odt")
     // get bookmark interface
     uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<container::XIndexAccess> 
xBookmarksByIdx(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
-    uno::Reference<container::XNameAccess> 
xBookmarksByName(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xBookmarksByName = 
xBookmarksSupplier->getBookmarks();
 
     // check: we have 2 bookmarks
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5), 
xBookmarksByIdx->getCount());
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
index 60263001baf1..50fca6cb0dfa 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
@@ -346,7 +346,7 @@ DECLARE_OOXMLEXPORT_TEST(testFdo69649, "fdo69649.docx")
     uno::Reference<text::XDocumentIndexesSupplier> xIndexSupplier(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<container::XIndexAccess> xIndexes = 
xIndexSupplier->getDocumentIndexes( );
     uno::Reference<text::XDocumentIndex> xTOCIndex(xIndexes->getByIndex(0), 
uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xTextRange(xTOCIndex->getAnchor(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xTextRange = xTOCIndex->getAnchor();
     uno::Reference<text::XText> xText = xTextRange->getText( );
     uno::Reference<text::XTextCursor> xTextCursor = xText->createTextCursor( );
     xTextCursor->gotoRange(xTextRange->getStart(),false);
@@ -721,7 +721,7 @@ DECLARE_OOXMLEXPORT_TEST(testHidemark, "hidemark.docx")
     uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<container::XIndexAccess> 
xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
     uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), 
uno::UNO_QUERY);
-    uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), 
uno::UNO_QUERY);
+    uno::Reference<table::XTableRows> xTableRows = xTextTable->getRows();
     // Height should be minimal
     CPPUNIT_ASSERT_EQUAL(convertTwipToMm100(MINLAY), 
getProperty<sal_Int64>(xTableRows->getByIndex(1), "Height"));
     // Size type was MIN, should be FIX to avoid considering the end of 
paragraph marker.
@@ -737,7 +737,7 @@ DECLARE_OOXMLEXPORT_TEST(testHidemarkb, 
"tdf99616_hidemarkb.docx")
     uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<container::XIndexAccess> 
xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
     uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), 
uno::UNO_QUERY);
-    uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), 
uno::UNO_QUERY);
+    uno::Reference<table::XTableRows> xTableRows = xTextTable->getRows();
     // Height should be .5cm
     CPPUNIT_ASSERT_EQUAL(sal_Int64(501), 
getProperty<sal_Int64>(xTableRows->getByIndex(1), "Height"));
     // Size type was MIN, should be FIX to avoid considering the end of 
paragraph marker.
@@ -770,29 +770,28 @@ DECLARE_OOXMLEXPORT_TEST(testFdo85542, "fdo85542.docx")
     uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<container::XIndexAccess> 
xBookmarksByIdx(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), 
xBookmarksByIdx->getCount());
-    uno::Reference<container::XNameAccess> 
xBookmarksByName(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xBookmarksByName = 
xBookmarksSupplier->getBookmarks();
     CPPUNIT_ASSERT(xBookmarksByName->hasByName("B1"));
     CPPUNIT_ASSERT(xBookmarksByName->hasByName("B2"));
     CPPUNIT_ASSERT(xBookmarksByName->hasByName("B3"));
     // B1
     uno::Reference<text::XTextContent> 
xContent1(xBookmarksByName->getByName("B1"), uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xRange1(xContent1->getAnchor(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xRange1 = xContent1->getAnchor();
     CPPUNIT_ASSERT_EQUAL(OUString("ABB"), xRange1->getString());
     // B2
     uno::Reference<text::XTextContent> 
xContent2(xBookmarksByName->getByName("B2"), uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xRange2(xContent2->getAnchor(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xRange2 = xContent2->getAnchor();
     CPPUNIT_ASSERT_EQUAL(OUString("BBC"), xRange2->getString());
     // B3 -- testing a collapsed bookmark
     uno::Reference<text::XTextContent> 
xContent3(xBookmarksByName->getByName("B3"), uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xRange3(xContent3->getAnchor(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xRange3 = xContent3->getAnchor();
     CPPUNIT_ASSERT_EQUAL(xRange3->getString(), OUString());
-    uno::Reference<text::XText> xText(xRange3->getText( ), uno::UNO_QUERY);
-    uno::Reference<text::XTextCursor> 
xNeighborhoodCursor(xText->createTextCursor( ), uno::UNO_QUERY);
+    uno::Reference<text::XText> xText = xRange3->getText( );
+    uno::Reference<text::XTextCursor> xNeighborhoodCursor = 
xText->createTextCursor( );
     xNeighborhoodCursor->gotoRange(xRange3, false);
     xNeighborhoodCursor->goLeft(1, false);
     xNeighborhoodCursor->goRight(2, true);
-    uno::Reference<text::XTextRange> xTextNeighborhood(xNeighborhoodCursor, 
uno::UNO_QUERY);
-    CPPUNIT_ASSERT_EQUAL(OUString("AB"), xTextNeighborhood->getString());
+    CPPUNIT_ASSERT_EQUAL(OUString("AB"), xNeighborhoodCursor->getString());
 }
 
 DECLARE_OOXMLEXPORT_TEST(testTdf65955, "tdf65955.odt")
@@ -800,16 +799,16 @@ DECLARE_OOXMLEXPORT_TEST(testTdf65955, "tdf65955.odt")
     uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<container::XIndexAccess> 
xBookmarksByIdx(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), 
xBookmarksByIdx->getCount());
-    uno::Reference<container::XNameAccess> 
xBookmarksByName(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xBookmarksByName = 
xBookmarksSupplier->getBookmarks();
     CPPUNIT_ASSERT(xBookmarksByName->hasByName("a"));
     CPPUNIT_ASSERT(xBookmarksByName->hasByName("b"));
     // a
     uno::Reference<text::XTextContent> 
xContent3(xBookmarksByName->getByName("a"), uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xRange3(xContent3->getAnchor(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xRange3 = xContent3->getAnchor();
     CPPUNIT_ASSERT_EQUAL(xRange3->getString(), OUString());
     // b
     uno::Reference<text::XTextContent> 
xContent2(xBookmarksByName->getByName("b"), uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xRange2(xContent2->getAnchor(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xRange2 = xContent2->getAnchor();
     CPPUNIT_ASSERT_EQUAL(OUString("r"), xRange2->getString());
 }
 
@@ -818,11 +817,11 @@ DECLARE_OOXMLEXPORT_TEST(testTdf65955_2, "tdf65955_2.odt")
     uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<container::XIndexAccess> 
xBookmarksByIdx(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), 
xBookmarksByIdx->getCount());
-    uno::Reference<container::XNameAccess> 
xBookmarksByName(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xBookmarksByName = 
xBookmarksSupplier->getBookmarks();
     CPPUNIT_ASSERT(xBookmarksByName->hasByName("test"));
 
     uno::Reference<text::XTextContent> 
xContent3(xBookmarksByName->getByName("test"), uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xRange3(xContent3->getAnchor(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xRange3 = xContent3->getAnchor();
     CPPUNIT_ASSERT_EQUAL(OUString("foo bar"), xRange3->getString());
 }
 
@@ -879,7 +878,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf87460, "tdf87460.docx")
 DECLARE_OOXMLEXPORT_TEST(testTdf90611, "tdf90611.docx")
 {
     uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xFootnotes = 
xFootnotesSupplier->getFootnotes();
     uno::Reference<text::XText> xFootnoteText;
     xFootnotes->getByIndex(0) >>= xFootnoteText;
     // This was 11.
@@ -905,7 +904,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf86374, "tdf86374.docx")
     uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<container::XIndexAccess> 
xTables(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY);
     uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), 
uno::UNO_QUERY);
-    uno::Reference<table::XTableRows> xTableRows(xTable->getRows(), 
uno::UNO_QUERY);
+    uno::Reference<table::XTableRows> xTableRows = xTable->getRows();
     // btLr text direction was imported as FIX, it should be MIN to have 
enough space for the additionally entered paragraphs.
     CPPUNIT_ASSERT_EQUAL(text::SizeType::MIN, 
getProperty<sal_Int16>(xTableRows->getByIndex(0), "SizeType"));
 }
@@ -1022,7 +1021,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf91417, "tdf91417.docx")
 {
     // The first paragraph should contain a link to "http://www.google.com/";
     uno::Reference<text::XTextDocument> xTextDocument(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<text::XTextCursor> 
xTextCursor(xTextDocument->getText()->createTextCursor( ), uno::UNO_QUERY);
+    uno::Reference<text::XTextCursor> xTextCursor = 
xTextDocument->getText()->createTextCursor( );
     uno::Reference<beans::XPropertySet> xCursorProps(xTextCursor, 
uno::UNO_QUERY);
     OUString aValue;
     xCursorProps->getPropertyValue("HyperLinkURL") >>= aValue;
@@ -1033,7 +1032,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf90810, 
"tdf90810short.docx")
 {
     uno::Reference<text::XTextDocument> xTextDocument(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<text::XFootnotesSupplier> xFootnoteSupp(xTextDocument, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xFootnoteIdxAcc(xFootnoteSupp->getFootnotes(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xFootnoteIdxAcc = 
xFootnoteSupp->getFootnotes();
     uno::Reference<text::XFootnote> xFootnote(xFootnoteIdxAcc->getByIndex(0), 
uno::UNO_QUERY);
     uno::Reference<text::XText> xFootnoteText(xFootnote, uno::UNO_QUERY);
     OUString sFootnoteText = xFootnoteText->getString();
@@ -1053,7 +1052,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf95777, "tdf95777.docx")
 DECLARE_OOXMLEXPORT_TEST(testTdf94374, "hello.docx")
 {
     uno::Reference<text::XTextDocument> xTextDocument(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xText(xTextDocument->getText(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xText = xTextDocument->getText();
     uno::Reference<text::XTextRange> xEnd = xText->getEnd();
     // This failed: it wasn't possible to insert a DOCX document into an 
existing Writer one.
     CPPUNIT_ASSERT(paste("tdf94374.docx", xEnd));
@@ -1205,7 +1204,7 @@ DECLARE_OOXMLEXPORT_TEST( testTablePosition14, 
"table-position-14.docx" )
         uno::Reference< view::XSelectionSupplier > xCtrl( 
xModel->getCurrentController(), uno::UNO_QUERY );
         xCtrl->select( uno::makeAny( xTable1 ) );
         uno::Reference< text::XTextViewCursorSupplier > 
xTextViewCursorSupplier( xCtrl, uno::UNO_QUERY );
-        uno::Reference< text::XTextViewCursor > xCursor( 
xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY );
+        uno::Reference< text::XTextViewCursor > xCursor = 
xTextViewCursorSupplier->getViewCursor();
         awt::Point pos = xCursor->getPosition();
         CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE( "Incorrect X coord computed from 
docx",
             aXCoordsFromOffice[i], pos.X, 1 );
@@ -1229,7 +1228,7 @@ DECLARE_OOXMLEXPORT_TEST( testTablePosition15, 
"table-position-15.docx" )
         uno::Reference< view::XSelectionSupplier > xCtrl( 
xModel->getCurrentController(), uno::UNO_QUERY );
         xCtrl->select( uno::makeAny( xTable1 ) );
         uno::Reference< text::XTextViewCursorSupplier > 
xTextViewCursorSupplier( xCtrl, uno::UNO_QUERY );
-        uno::Reference< text::XTextViewCursor > xCursor( 
xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY );
+        uno::Reference< text::XTextViewCursor > xCursor = 
xTextViewCursorSupplier->getViewCursor();
         awt::Point pos = xCursor->getPosition();
         CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE( "Incorrect X coord computed from 
docx",
             aXCoordsFromOffice[i], pos.X, 1 );
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
index e4c60af21ea9..04c7bead9830 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
@@ -149,7 +149,7 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf121561_tocTitle, 
"tdf121456_tabsOffse
 DECLARE_OOXMLEXPORT_TEST(testTdf124106, "tdf121456.docx")
 {
     uno::Reference<text::XTextDocument> textDocument(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<text::XText> text(textDocument->getText(), uno::UNO_QUERY);
+    uno::Reference<text::XText> text = textDocument->getText();
     // -1 if the 'Y' character does not occur
     CPPUNIT_ASSERT_EQUAL(sal_Int32(-1), text->getString().indexOf('Y'));
     CPPUNIT_ASSERT_EQUAL(sal_Int32(-1), text->getString().indexOf('y'));
@@ -161,7 +161,7 @@ 
DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf121561_tocTitleDocx, "tdf121456_tabsO
 
     // get TOC node
     uno::Reference<text::XDocumentIndexesSupplier> xIndexSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xIndexes(xIndexSupplier->getDocumentIndexes( ), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xIndexes = 
xIndexSupplier->getDocumentIndexes( );
     uno::Reference<text::XDocumentIndex> xTOCIndex(xIndexes->getByIndex(0), 
uno::UNO_QUERY);
 
     // ensure TOC title was set in TOC properties
@@ -510,7 +510,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf104354, "tdf104354.docx")
 DECLARE_OOXMLEXPORT_TEST(testTdf104354_firstParaInSection, 
"tdf104354_firstParaInSection.docx")
 {
     uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xFootnotes = 
xFootnotesSupplier->getFootnotes();
     uno::Reference<text::XText> xText(xFootnotes->getByIndex(0), 
uno::UNO_QUERY);
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(494),
                          getProperty<sal_Int32>(getParagraphOfText(1, xText), 
"ParaTopMargin"));
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx
index 87b1a4cfd37f..1c973369902b 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx
@@ -354,8 +354,7 @@ DECLARE_OOXMLEXPORT_TEST(testObjectCrossReference, 
"object_cross_reference.odt")
     uno::Reference<container::XIndexAccess> 
xBookmarksByIdx(xBookmarksSupplier->getBookmarks(),
                                                             uno::UNO_QUERY);
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(15), 
xBookmarksByIdx->getCount());
-    uno::Reference<container::XNameAccess> 
xBookmarksByName(xBookmarksSupplier->getBookmarks(),
-                                                            uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xBookmarksByName = 
xBookmarksSupplier->getBookmarks();
     CPPUNIT_ASSERT(xBookmarksByName->hasByName("Ref_Drawing0_full"));
     
CPPUNIT_ASSERT(xBookmarksByName->hasByName("Ref_Drawing0_label_and_number"));
     CPPUNIT_ASSERT(xBookmarksByName->hasByName("Ref_Drawing0_caption_only"));
@@ -379,31 +378,31 @@ DECLARE_OOXMLEXPORT_TEST(testObjectCrossReference, 
"object_cross_reference.odt")
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Drawing0_full"), uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("Drawing 1: A rectangle"), 
xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Drawing0_label_and_number"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("Drawing 1"), xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Drawing0_caption_only"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("A rectangle"), xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Drawing0_number_only"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("1"), xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Drawing1_full"), uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("Drawing 2: a circle"), 
xRange->getString());
     }
 
@@ -411,31 +410,31 @@ DECLARE_OOXMLEXPORT_TEST(testObjectCrossReference, 
"object_cross_reference.odt")
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Illustration0_full"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("Illustration 1: A picture"), 
xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Illustration0_label_and_number"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("Illustration 1"), xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Illustration0_caption_only"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("A picture"), xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Illustration0_number_only"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("1"), xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Illustration1_caption_only"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("an other image"), xRange->getString());
     }
 
@@ -443,31 +442,31 @@ DECLARE_OOXMLEXPORT_TEST(testObjectCrossReference, 
"object_cross_reference.odt")
     {
         uno::Reference<text::XTextContent> 
xContent(xBookmarksByName->getByName("Ref_Text0_full"),
                                                     uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("Text 1: A frame"), xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Text0_label_and_number"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("Text 1"), xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Text0_caption_only"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("A frame"), xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Text0_number_only"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("1"), xRange->getString());
     }
     {
         uno::Reference<text::XTextContent> xContent(
             xBookmarksByName->getByName("Ref_Text1_label_and_number"), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> xRange(xContent->getAnchor(), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> xRange = xContent->getAnchor();
         CPPUNIT_ASSERT_EQUAL(OUString("Text 2"), xRange->getString());
     }
 
@@ -763,8 +762,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf120224_textControlCrossRef, 
"tdf120224_textContr
     uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<container::XIndexAccess> 
xBookmarksByIdx(xBookmarksSupplier->getBookmarks(),
                                                             uno::UNO_QUERY);
-    uno::Reference<container::XNameAccess> 
xBookmarksByName(xBookmarksSupplier->getBookmarks(),
-                                                            uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xBookmarksByName = 
xBookmarksSupplier->getBookmarks();
     // TextFields should not be turned into real bookmarks.
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), 
xBookmarksByIdx->getCount());
 
@@ -786,7 +784,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf117504_numberingIndent, 
"tdf117504_numberingInde
 
 DECLARE_OOXMLEXPORT_TEST(testWatermark, "watermark.docx")
 {
-    uno::Reference<drawing::XShape> xShape(getShape(1), uno::UNO_QUERY);
+    uno::Reference<drawing::XShape> xShape = getShape(1);
     uno::Reference<beans::XPropertySet> xPropertySet(xShape, uno::UNO_QUERY);
 
     sal_Int32 nHeight = xShape->getSize().Height;
@@ -801,7 +799,7 @@ DECLARE_OOXMLEXPORT_TEST(testWatermark, "watermark.docx")
 
 DECLARE_OOXMLEXPORT_TEST(testWatermarkTrim, "tdf114308.docx")
 {
-    uno::Reference<drawing::XShape> xShape(getShape(1), uno::UNO_QUERY);
+    uno::Reference<drawing::XShape> xShape = getShape(1);
 
     // Rounding errors
     sal_Int32 nHeight = xShape->getSize().Height;
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
index b0201deb2cd5..3fc5effa1d87 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
@@ -682,7 +682,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf112446_frameStyle, 
"tdf112446_frameStyle.docx")
 DECLARE_OOXMLEXPORT_TEST(testTdf82173_footnoteStyle, 
"tdf82173_footnoteStyle.docx")
 {
     uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xFootnotes = 
xFootnotesSupplier->getFootnotes();
 
     uno::Reference<text::XText> xFootnoteText;
     xFootnotes->getByIndex(0) >>= xFootnoteText;
@@ -705,7 +705,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf82173_footnoteStyle, 
"tdf82173_footnoteStyle.doc
 DECLARE_OOXMLEXPORT_TEST(testTdf82173_endnoteStyle, 
"tdf82173_endnoteStyle.docx")
 {
     uno::Reference<text::XEndnotesSupplier> xEndnotesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xEndnotes(xEndnotesSupplier->getEndnotes(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xEndnotes = 
xEndnotesSupplier->getEndnotes();
     uno::Reference<text::XFootnote> xEndnote;
     xEndnotes->getByIndex(0) >>= xEndnote;
     // character properties were previously not assigned to the 
footnote/endnote in-text anchor.
@@ -743,10 +743,10 @@ DECLARE_OOXMLEXPORT_TEST(testTdf55427_footnote2endnote, 
"tdf55427_footnote2endno
     CPPUNIT_ASSERT_EQUAL_MESSAGE( "Endnote numbering type", 
SVX_NUM_ROMAN_LOWER, pDoc->GetEndNoteInfo().aFormat.GetNumberingType() );
 
     uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xFootnotes = 
xFootnotesSupplier->getFootnotes();
 
     uno::Reference<text::XEndnotesSupplier> xEndnotesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xEndnotes(xEndnotesSupplier->getEndnotes(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xEndnotes = 
xEndnotesSupplier->getEndnotes();
     uno::Reference<text::XFootnote> xEndnote;
     xEndnotes->getByIndex(0) >>= xEndnote;
     uno::Reference<text::XText> xEndnoteText;
@@ -980,7 +980,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf100075, "tdf100075.docx")
 DECLARE_OOXMLEXPORT_TEST(testTdf105095, "tdf105095.docx")
 {
     uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xFootnotes = 
xFootnotesSupplier->getFootnotes();
     uno::Reference<text::XTextRange> xTextRange(xFootnotes->getByIndex(0), 
uno::UNO_QUERY);
     // This failed, tab between the footnote number and the footnote content
     // was lost on import.
@@ -990,7 +990,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf105095, "tdf105095.docx")
 DECLARE_OOXMLEXPORT_TEST(testTdf106062_nonHangingFootnote, 
"tdf106062_nonHangingFootnote.odt")
 {
     uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xFootnotes = 
xFootnotesSupplier->getFootnotes();
     uno::Reference<text::XTextRange> xTextRange(xFootnotes->getByIndex(0), 
uno::UNO_QUERY);
     // This failed, tab between the footnote number and the footnote content 
was lost on import.
     CPPUNIT_ASSERT_MESSAGE( "Footnote starts with a tab", 
xTextRange->getString().startsWith("\t") );
@@ -1265,7 +1265,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf90789, "tdf90789.docx")
 
     uno::Reference<text::XTextViewCursorSupplier> 
xTextViewCursorSupplier(xCtrl, uno::UNO_QUERY_THROW);
     uno::Reference<text::XTextViewCursor> 
xTextCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_SET_THROW);
-    uno::Reference<text::XPageCursor> xPageCursor(xTextCursor.get(), 
uno::UNO_QUERY_THROW);
+    uno::Reference<text::XPageCursor> xPageCursor(xTextCursor, 
uno::UNO_QUERY_THROW);
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(1), xPageCursor->getPage());
 }
 
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx 
b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index e9901a72cba7..4799a44db8c4 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -94,13 +94,11 @@ public:
             {
                 OUString aURL(m_directories.getURLFromSrc(mpTestDocumentPath) 
+ OUString::createFromAscii(filename));
                 CPPUNIT_ASSERT_MESSAGE("no desktop", mxDesktop.is());
-                uno::Reference<frame::XComponentLoader> xLoader(mxDesktop, 
uno::UNO_QUERY);
-                CPPUNIT_ASSERT_MESSAGE("no loader", xLoader.is());
                 uno::Sequence<beans::PropertyValue> args( 
comphelper::InitPropertySequence({
                         { "DocumentService", 
uno::Any(OUString("com.sun.star.text.TextDocument")) }
                     }));
 
-                uno::Reference<lang::XComponent> xComponent = 
xLoader->loadComponentFromURL(aURL, "_default", 0, args);
+                uno::Reference<lang::XComponent> xComponent = 
mxDesktop->loadComponentFromURL(aURL, "_default", 0, args);
                 OUString sMessage = "loading succeeded: " + aURL;
                 CPPUNIT_ASSERT_MESSAGE(OUStringToOString(sMessage, 
RTL_TEXTENCODING_UTF8).getStr(), !xComponent.is());
             }
@@ -492,7 +490,7 @@ DECLARE_OOXMLIMPORT_TEST(testN780645, "n780645.docx")
     uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, 
uno::UNO_QUERY);
     uno::Reference<container::XIndexAccess> 
xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
     uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), 
uno::UNO_QUERY);
-    uno::Reference<table::XTableRows> xTableRows(xTextTable->getRows(), 
uno::UNO_QUERY);
+    uno::Reference<table::XTableRows> xTableRows = xTextTable->getRows();
     CPPUNIT_ASSERT_EQUAL(sal_Int16(2135), getProperty< 
uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(1), 
"TableColumnSeparators")[0].Position); // was 1999
 }
 
@@ -503,7 +501,7 @@ DECLARE_OOXMLIMPORT_TEST(testWordArtResizing, 
"WordArt.docx")
        The test-case ensures the original height and width of the word-art is 
not changed while importing*/
 
     uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDrawPage(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDrawPage = 
xDrawPageSupplier->getDrawPage();
     CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount());
 
     uno::Reference<drawing::XShape> xShape(xDrawPage->getByIndex(0), 
uno::UNO_QUERY);
@@ -525,7 +523,7 @@ DECLARE_OOXMLIMPORT_TEST(testGroupshapeLine, 
"groupshape-line.docx")
      * xray ThisComponent.DrawPage(1).getByIndex(0).Size 'width: 10160, 
height: 0
      */
     uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDrawPage(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDrawPage = 
xDrawPageSupplier->getDrawPage();
     CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xDrawPage->getCount());
 
     uno::Reference<drawing::XShape> xShape(xDrawPage->getByIndex(0), 
uno::UNO_QUERY);
@@ -588,7 +586,7 @@ DECLARE_OOXMLIMPORT_TEST(testN820788, "n820788.docx")
 DECLARE_OOXMLIMPORT_TEST(testN820504, "n820504.docx")
 {
     uno::Reference<style::XStyleFamiliesSupplier> 
xFamiliesSupplier(mxComponent, uno::UNO_QUERY);
-    uno::Reference<container::XNameAccess> 
xFamiliesAccess(xFamiliesSupplier->getStyleFamilies(), uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xFamiliesAccess = 
xFamiliesSupplier->getStyleFamilies();
     uno::Reference<container::XNameAccess> 
xStylesAccess(xFamiliesAccess->getByName("ParagraphStyles"), uno::UNO_QUERY);
     uno::Reference<beans::XPropertySet> 
xStyle(xStylesAccess->getByName("Default Style"), uno::UNO_QUERY);
     // The problem was that the CharColor was set to AUTO (-1) even if we have 
some default char color set
@@ -726,7 +724,7 @@ DECLARE_OOXMLIMPORT_TEST(testTdf75573_lostTable, 
"tdf75573_lostTable.docx")
     CPPUNIT_ASSERT_EQUAL_MESSAGE("# of tables", sal_Int32(1), 
xTables->getCount() );
 
     uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
     CPPUNIT_ASSERT_EQUAL_MESSAGE("# of frames/shapes", sal_Int32(0), 
xDraws->getCount() );
 
     CPPUNIT_ASSERT_EQUAL_MESSAGE("# of pages", 3, getPages() );
@@ -1072,7 +1070,7 @@ DECLARE_OOXMLIMPORT_TEST(testTdf85232, "tdf85232.docx")
 {
     uno::Reference<drawing::XShapes> xShapes(getShapeByName("Group 219"), 
uno::UNO_QUERY);
     uno::Reference<drawing::XShape> xShape(xShapes->getByIndex(1), 
uno::UNO_QUERY);
-    uno::Reference<drawing::XShapeDescriptor> xShapeDescriptor(xShape, 
uno::UNO_QUERY);
+    uno::Reference<drawing::XShapeDescriptor> xShapeDescriptor = xShape;
     // Make sure we're not testing the ellipse child.
     CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.LineShape"), 
xShapeDescriptor->getShapeType());
 
@@ -1159,7 +1157,7 @@ DECLARE_OOXMLIMPORT_TEST(testTdf95970, "tdf95970.docx")
 
 DECLARE_OOXMLIMPORT_TEST(testTdf96674, "tdf96674.docx")
 {
-    uno::Reference<drawing::XShape> xShape(getShape(1), uno::UNO_QUERY);
+    uno::Reference<drawing::XShape> xShape = getShape(1);
     CPPUNIT_ASSERT(xShape.is());
     awt::Size aActualSize(xShape->getSize());
     // Width was 3493: the vertical line was horizontal.
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx 
b/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx
index 3c7154ec3016..d664d78e6d33 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx
@@ -348,10 +348,9 @@ DECLARE_OOXMLIMPORT_TEST(testTdf115094, "tdf115094.docx")
     // anchor of graphic has to be the text in the text frame
     // xray ThisComponent.DrawPage(1).Anchor.Text
     uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDrawPage(xDrawPageSupplier->getDrawPage(),
-                                                      uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDrawPage = 
xDrawPageSupplier->getDrawPage();
     uno::Reference<text::XTextContent> xShape(xDrawPage->getByIndex(1), 
uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xText1(xShape->getAnchor()->getText(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xText1 = xShape->getAnchor()->getText();
 
     // xray ThisComponent.TextTables(0).getCellByName("A1")
     uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, 
uno::UNO_QUERY);
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx 
b/sw/qa/extras/rtfimport/rtfimport.cxx
index 45a54092454e..316cfc06f7d5 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -71,8 +71,7 @@ DECLARE_RTFIMPORT_TEST(testN695479, "n695479.rtf")
                          getProperty<sal_Int32>(xPropertySet, "Height"));
 
     uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(),
-                                                   uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
     bool bFrameFound = false, bDrawFound = false;
     for (int i = 0; i < xDraws->getCount(); ++i)
     {
@@ -82,8 +81,8 @@ DECLARE_RTFIMPORT_TEST(testN695479, "n695479.rtf")
             // Both frames should be anchored to the first paragraph.
             bFrameFound = true;
             uno::Reference<text::XTextContent> xTextContent(xServiceInfo, 
uno::UNO_QUERY);
-            uno::Reference<text::XTextRange> xRange(xTextContent->getAnchor(), 
uno::UNO_QUERY);
-            uno::Reference<text::XText> xText(xRange->getText(), 
uno::UNO_QUERY);
+            uno::Reference<text::XTextRange> xRange = 
xTextContent->getAnchor();
+            uno::Reference<text::XText> xText = xRange->getText();
             CPPUNIT_ASSERT_EQUAL(OUString("plain"), xText->getString());
 
             if (i == 0)
@@ -191,8 +190,7 @@ DECLARE_RTFIMPORT_TEST(testTdf108951, "tdf108951.rtf")
 DECLARE_RTFIMPORT_TEST(testFdo47036, "fdo47036.rtf")
 {
     uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(),
-                                                   uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
     int nAtCharacter = 0;
     for (int i = 0; i < xDraws->getCount(); ++i)
     {
@@ -213,8 +211,7 @@ DECLARE_RTFIMPORT_TEST(testFdo47036, "fdo47036.rtf")
 DECLARE_RTFIMPORT_TEST(testFdo45182, "fdo45182.rtf")
 {
     uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xFootnotes(xFootnotesSupplier->getFootnotes(),
-                                                       uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xFootnotes = 
xFootnotesSupplier->getFootnotes();
     uno::Reference<text::XTextRange> xTextRange(xFootnotes->getByIndex(0), 
uno::UNO_QUERY);
     // Encoding in the footnote was wrong.
     OUString aExpected(u"\u017Eivnost\u00ED" SAL_NEWLINE_STRING);
@@ -331,7 +328,7 @@ DECLARE_RTFIMPORT_TEST(testFdo52066, "fdo52066.rtf")
      *
      * xray ThisComponent.DrawPage(0).Size.Height
      */
-    uno::Reference<drawing::XShape> xShape(getShape(1), uno::UNO_QUERY);
+    uno::Reference<drawing::XShape> xShape = getShape(1);
     CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(19)), 
xShape->getSize().Height);
 }
 
@@ -354,8 +351,7 @@ DECLARE_RTFIMPORT_TEST(testTdf122430, "tdf122430.rtf")
 DECLARE_RTFIMPORT_TEST(testFdo49892, "fdo49892.rtf")
 {
     uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(),
-                                                   uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
     for (int i = 0; i < xDraws->getCount(); ++i)
     {
         OUString aDescription = getProperty<OUString>(xDraws->getByIndex(i), 
"Description");
@@ -422,7 +418,7 @@ DECLARE_RTFIMPORT_TEST(testInk, "ink.rtf")
 DECLARE_RTFIMPORT_TEST(testFdo79319, "fdo79319.rtf")
 {
     // the thin horizontal rule was imported as a big fat rectangle
-    uno::Reference<drawing::XShape> xShape(getShape(1), uno::UNO_QUERY);
+    uno::Reference<drawing::XShape> xShape = getShape(1);
     CPPUNIT_ASSERT_EQUAL(sal_Int16(100), getProperty<sal_Int16>(xShape, 
"RelativeWidth"));
     CPPUNIT_ASSERT_DOUBLES_EQUAL(sal_Int32(15238), xShape->getSize().Width, 
10);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(sal_Int32(53), xShape->getSize().Height, 10);
@@ -449,7 +445,7 @@ DECLARE_RTFIMPORT_TEST(testFdo55525, "fdo55525.rtf")
     // Negative left margin was ~missing, -191
     CPPUNIT_ASSERT_EQUAL(sal_Int32(-1877), getProperty<sal_Int32>(xTable, 
"LeftMargin"));
     // Cell width of A1 was 3332 (e.g. not set, 30% percent of total width)
-    uno::Reference<table::XTableRows> xTableRows(xTable->getRows(), 
uno::UNO_QUERY);
+    uno::Reference<table::XTableRows> xTableRows = xTable->getRows();
     CPPUNIT_ASSERT_EQUAL(sal_Int16(896), 
getProperty<uno::Sequence<text::TableColumnSeparator>>(
                                              xTableRows->getByIndex(0), 
"TableColumnSeparators")[0]
                                              .Position);
@@ -460,8 +456,7 @@ DECLARE_RTFIMPORT_TEST(testFdo57708, "fdo57708.rtf")
     // There were two issues: the doc was of 2 pages and the picture was 
missing.
     CPPUNIT_ASSERT_EQUAL(1, getPages());
     uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(),
-                                                   uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
     // Two objects: a picture and a textframe.
     CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xDraws->getCount());
 }
@@ -486,7 +481,7 @@ DECLARE_RTFIMPORT_TEST(testFdo59953, "fdo59953.rtf")
                                                     uno::UNO_QUERY);
     uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), 
uno::UNO_QUERY);
     // Cell width of A1 was 4998 (e.g. not set / not wide enough, ~50% of 
total width)
-    uno::Reference<table::XTableRows> xTableRows(xTable->getRows(), 
uno::UNO_QUERY);
+    uno::Reference<table::XTableRows> xTableRows = xTable->getRows();
     CPPUNIT_ASSERT_EQUAL(sal_Int16(7649), 
getProperty<uno::Sequence<text::TableColumnSeparator>>(
                                               xTableRows->getByIndex(0), 
"TableColumnSeparators")[0]
                                               .Position);
@@ -624,8 +619,7 @@ DECLARE_RTFIMPORT_TEST(testN823675, "n823675.rtf")
 DECLARE_RTFIMPORT_TEST(testGroupshape, "groupshape.rtf")
 {
     uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(),
-                                                   uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
     // There should be a single groupshape with 2 children.
     CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDraws->getCount());
     uno::Reference<drawing::XShapes> xGroupshape(xDraws->getByIndex(0), 
uno::UNO_QUERY);
@@ -635,8 +629,7 @@ DECLARE_RTFIMPORT_TEST(testGroupshape, "groupshape.rtf")
 DECLARE_RTFIMPORT_TEST(testGroupshape_notext, "groupshape-notext.rtf")
 {
     uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xDraws(xDrawPageSupplier->getDrawPage(),
-                                                   uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xDraws = 
xDrawPageSupplier->getDrawPage();
     // There should be a single groupshape with 2 children.
     CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDraws->getCount());
     uno::Reference<drawing::XShapes> xGroupshape(xDraws->getByIndex(0), 
uno::UNO_QUERY);
@@ -680,7 +673,7 @@ DECLARE_RTFIMPORT_TEST(testFdo66565, "fdo66565.rtf")
                                                     uno::UNO_QUERY);
     uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), 
uno::UNO_QUERY);
     // Cell width of A2 was 554, should be 453/14846*10000
-    uno::Reference<table::XTableRows> xTableRows(xTable->getRows(), 
uno::UNO_QUERY);
+    uno::Reference<table::XTableRows> xTableRows = xTable->getRows();
     CPPUNIT_ASSERT_EQUAL(sal_Int16(304), 
getProperty<uno::Sequence<text::TableColumnSeparator>>(
                                              xTableRows->getByIndex(1), 
"TableColumnSeparators")[0]
                                              .Position);
@@ -750,7 +743,7 @@ DECLARE_RTFIMPORT_TEST(testTdf115153, "tdf115153.rtf")
 DECLARE_RTFIMPORT_TEST(testFdo68291, "fdo68291.odt")
 {
     uno::Reference<text::XTextDocument> xTextDocument(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xText(xTextDocument->getText(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xText = xTextDocument->getText();
     uno::Reference<text::XTextRange> xEnd = xText->getEnd();
     paste("rtfimport/data/fdo68291-paste.rtf", xEnd);
 
@@ -818,7 +811,7 @@ DECLARE_RTFIMPORT_TEST(testFdo74823, "fdo74823.rtf")
                                                     uno::UNO_QUERY);
     uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), 
uno::UNO_QUERY);
     // Cell width of C2 was too large / column separator being 3749 too small 
(e.g. not set, around 3/7 of total width)
-    uno::Reference<table::XTableRows> xTableRows(xTable->getRows(), 
uno::UNO_QUERY);
+    uno::Reference<table::XTableRows> xTableRows = xTable->getRows();
     CPPUNIT_ASSERT_EQUAL(sal_Int16(5391), 
getProperty<uno::Sequence<text::TableColumnSeparator>>(
                                               xTableRows->getByIndex(1), 
"TableColumnSeparators")[2]
                                               .Position);
@@ -1069,8 +1062,7 @@ DECLARE_RTFIMPORT_TEST(testTdf90046, "tdf90046.rtf")
 {
     // this was crashing on importing the footnote
     uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xFootnotes(xFootnotesSupplier->getFootnotes(),
-                                                       uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xFootnotes = 
xFootnotesSupplier->getFootnotes();
     uno::Reference<text::XTextRange> xTextRange(xFootnotes->getByIndex(0), 
uno::UNO_QUERY);
     CPPUNIT_ASSERT_EQUAL(OUString("Ma"), xTextRange->getString());
 }
@@ -1078,7 +1070,7 @@ DECLARE_RTFIMPORT_TEST(testTdf90046, "tdf90046.rtf")
 DECLARE_RTFIMPORT_TEST(testFdo49893, "fdo49893.rtf")
 {
     // Image from shape was not loaded, invalid size of image after load
-    uno::Reference<drawing::XShape> xShape(getShape(2), uno::UNO_QUERY);
+    uno::Reference<drawing::XShape> xShape = getShape(2);
     CPPUNIT_ASSERT(xShape.is());
     CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(432)), 
xShape->getSize().Height);
     CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(1296)), 
xShape->getSize().Width);
@@ -1089,7 +1081,7 @@ DECLARE_RTFIMPORT_TEST(testFdo49893_3, "fdo49893-3.rtf")
     // No artifacts (black lines in left top corner) as shape #3 are expected
     try
     {
-        uno::Reference<drawing::XShape> xShape2(getShape(3), uno::UNO_QUERY);
+        uno::Reference<drawing::XShape> xShape2 = getShape(3);
         CPPUNIT_FAIL("exception expected: no shape #3 in document");
     }
     catch (lang::IndexOutOfBoundsException const&)
@@ -1131,7 +1123,7 @@ DECLARE_RTFIMPORT_TEST(testWrapDistance, 
"wrap-distance.rtf")
 DECLARE_RTFIMPORT_TEST(testTdf90260Par, "hello.rtf")
 {
     uno::Reference<text::XTextDocument> xTextDocument(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xText(xTextDocument->getText(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xText = xTextDocument->getText();
     uno::Reference<text::XTextRange> xEnd = xText->getEnd();
     paste("rtfimport/data/tdf90260-par.rtf", xEnd);
     CPPUNIT_ASSERT_EQUAL(2, getParagraphs());
@@ -1233,7 +1225,7 @@ DECLARE_RTFIMPORT_TEST(testTdf99498, "tdf99498.rtf")
 DECLARE_RTFIMPORT_TEST(testClassificatonPaste, "hello.rtf")
 {
     uno::Reference<text::XTextDocument> xTextDocument(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xText(xTextDocument->getText(), 
uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xText = xTextDocument->getText();
     uno::Reference<text::XTextRange> xEnd = xText->getEnd();
 
     // Not classified source, not classified destination: OK.
@@ -1334,18 +1326,15 @@ DECLARE_RTFIMPORT_TEST(testImportHeaderFooter, 
"tdf108055.rtf")
 
     // Check if any Header or Footer text snuck into the TextBody
     uno::Reference<text::XTextRange> paragraph = getParagraph(1);
-    uno::Reference<text::XTextRange> text(paragraph, uno::UNO_QUERY);
-    OUString value = text->getString();
+    OUString value = paragraph->getString();
     CPPUNIT_ASSERT_EQUAL(OUString("First Page"), value);
 
     paragraph = getParagraph(4);
-    uno::Reference<text::XTextRange> text2(paragraph, uno::UNO_QUERY);
-    value = text2->getString();
+    value = paragraph->getString();
     CPPUNIT_ASSERT_EQUAL(OUString("Second Page"), value);
 
     paragraph = getParagraph(7);
-    uno::Reference<text::XTextRange> text3(paragraph, uno::UNO_QUERY);
-    value = text3->getString();
+    value = paragraph->getString();
     CPPUNIT_ASSERT_EQUAL(OUString("Third Page"), value);
 
     //Check if Headers/Footers only contain what they should in this document
@@ -1403,7 +1392,7 @@ DECLARE_RTFIMPORT_TEST(testTdf108947, "tdf108947.rtf")
 DECLARE_RTFIMPORT_TEST(testWatermark, "watermark.rtf")
 {
     Size aExpectedSize(14965, 7482);
-    uno::Reference<drawing::XShape> xShape(getShape(1), uno::UNO_QUERY);
+    uno::Reference<drawing::XShape> xShape = getShape(1);
     awt::Size aActualSize(xShape->getSize());
 
     CPPUNIT_ASSERT_EQUAL(sal_Int32(aExpectedSize.Width()), aActualSize.Width);
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx 
b/sw/qa/extras/uiwriter/uiwriter.cxx
index d5a53d73841c..3c955903a5e5 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -916,12 +916,11 @@ void SwUiWriterTest::testFdo70807()
     for (sal_Int32 i = 0; i < xStylesIter->getCount(); ++i)
     {
         uno::Reference<style::XStyle> xStyle(xStylesIter->getByIndex(i), 
uno::UNO_QUERY);
-        uno::Reference<container::XNamed> xName(xStyle, uno::UNO_QUERY);
 
         bool expectedUsedStyle = false;
         bool expectedUserDefined = false;
 
-        OUString styleName(xName->getName());
+        OUString styleName(xStyle->getName());
 
         // just these styles are user defined styles
         if (styleName == "pagestyle1" || styleName == "pagestyle2")
@@ -1113,7 +1112,7 @@ void SwUiWriterTest::testWatermarkPosition()
         const OUString rPageStyleName = "Default Style";
         uno::Reference<frame::XModel> xModel = 
pDoc->GetDocShell()->GetBaseModel();
         uno::Reference<style::XStyleFamiliesSupplier> 
xStyleFamiliesSupplier(xModel, uno::UNO_QUERY);
-        uno::Reference<container::XNameAccess> 
xStyleFamilies(xStyleFamiliesSupplier->getStyleFamilies(), uno::UNO_QUERY);
+        uno::Reference<container::XNameAccess> xStyleFamilies = 
xStyleFamiliesSupplier->getStyleFamilies();
         uno::Reference<container::XNameAccess> 
xStyleFamily(xStyleFamilies->getByName("PageStyles"), uno::UNO_QUERY);
         uno::Reference<beans::XPropertySet> 
xPageStyle(xStyleFamily->getByName(rPageStyleName), uno::UNO_QUERY);
 
@@ -1147,7 +1146,7 @@ void SwUiWriterTest::testWatermarkPosition()
 
         pEditShell->SetWatermark(aWatermark);
 
-        uno::Reference<css::drawing::XShape> xShape(getShape(1), 
uno::UNO_QUERY);
+        uno::Reference<css::drawing::XShape> xShape = getShape(1);
         CPPUNIT_ASSERT(xShape.is());
 
         SdrPage* pPage = 
pWrtShell->GetDoc()->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0);
@@ -2195,7 +2194,7 @@ void SwUiWriterTest::testTextSearch()
     rIDCO.InsertPoolItem(*pCursor, aWeightItem);
     //Performing Search Operation and also covering the UNO coverage for 
setProperty
     uno::Reference<util::XSearchable> xSearch(mxComponent, uno::UNO_QUERY);
-    uno::Reference<util::XSearchDescriptor> 
xSearchDes(xSearch->createSearchDescriptor(), uno::UNO_QUERY);
+    uno::Reference<util::XSearchDescriptor> xSearchDes = 
xSearch->createSearchDescriptor();
     uno::Reference<util::XPropertyReplace> xProp(xSearchDes, uno::UNO_QUERY);
     //setting some properties
     uno::Sequence<beans::PropertyValue> aDescriptor( 
comphelper::InitPropertySequence({
@@ -2216,7 +2215,7 @@ void SwUiWriterTest::testTextSearch()
     CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndex->getCount());
     //Replacing the searched string via XReplaceable
     uno::Reference<util::XReplaceable> xReplace(mxComponent, uno::UNO_QUERY);
-    uno::Reference<util::XReplaceDescriptor> 
xReplaceDes(xReplace->createReplaceDescriptor(), uno::UNO_QUERY);
+    uno::Reference<util::XReplaceDescriptor> xReplaceDes = 
xReplace->createReplaceDescriptor();
     uno::Reference<util::XPropertyReplace> xProp2(xReplaceDes, uno::UNO_QUERY);
     xProp2->setReplaceAttributes(aDescriptor);
     //checking that the proper attributes are there or not
@@ -2244,7 +2243,7 @@ void SwUiWriterTest::testTdf69282()
     SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument 
*>(mxComponent.get());
     CPPUNIT_ASSERT(pTextDoc);
     SwDoc* source = pTextDoc->GetDocShell()->GetDoc();
-    uno::Reference<lang::XComponent> xSourceDoc(mxComponent, uno::UNO_QUERY);
+    uno::Reference<lang::XComponent> xSourceDoc = mxComponent;
     mxComponent.clear();
     SwDoc* target = createDoc();
     SwPageDesc* sPageDesc = source->MakePageDesc("SourceStyle");
@@ -2305,7 +2304,7 @@ void SwUiWriterTest::testTdf69282WithMirror()
     SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument 
*>(mxComponent.get());
     CPPUNIT_ASSERT(pTextDoc);
     SwDoc* source = pTextDoc->GetDocShell()->GetDoc();
-    uno::Reference<lang::XComponent> xSourceDoc(mxComponent, uno::UNO_QUERY);
+    uno::Reference<lang::XComponent> xSourceDoc = mxComponent;
     mxComponent.clear();
     SwDoc* target = createDoc();
     SwPageDesc* sPageDesc = source->MakePageDesc("SourceStyle");
@@ -3335,8 +3334,8 @@ void SwUiWriterTest::testTdf90808()
 {
     createDoc();
     uno::Reference<text::XTextDocument> xTextDocument(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xTextRange(xTextDocument->getText(), 
uno::UNO_QUERY);
-    uno::Reference<text::XText> xText(xTextRange->getText(), uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xTextRange = xTextDocument->getText();
+    uno::Reference<text::XText> xText = xTextRange->getText();
     uno::Reference<text::XParagraphCursor> xCursor(xText->createTextCursor(), 
uno::UNO_QUERY);
     //inserting text into document so that the paragraph is not empty
     xText->setString("Hello World!");
@@ -3649,7 +3648,7 @@ void SwUiWriterTest::testTdf88899()
     createDoc();
     uno::Reference<document::XDocumentPropertiesSupplier> 
xDocumentPropertiesSupplier(mxComponent, uno::UNO_QUERY);
     uno::Reference<document::XDocumentProperties> 
xProps(xDocumentPropertiesSupplier->getDocumentProperties());
-    uno::Reference<beans::XPropertyContainer> 
xUserProps(xProps->getUserDefinedProperties(), uno::UNO_QUERY);
+    uno::Reference<beans::XPropertyContainer> xUserProps = 
xProps->getUserDefinedProperties();
     css::util::DateTime aDateTime = {sal_uInt32(1234567), sal_uInt16(3), 
sal_uInt16(3), sal_uInt16(3), sal_uInt16(10), sal_uInt16(11), sal_uInt16(2014), 
true};
     xUserProps->addProperty("dateTime", 
sal_Int16(beans::PropertyAttribute::OPTIONAL), uno::makeAny(aDateTime));
     uno::Reference<lang::XMultiServiceFactory> xFact(mxComponent, 
uno::UNO_QUERY);
@@ -3667,8 +3666,8 @@ void SwUiWriterTest::testTdf88899()
     xPropSet->setPropertyValue("NumberFormat", uno::makeAny(key));
     //Inserting Text Content
     uno::Reference<text::XTextDocument> xTextDocument(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<text::XTextRange> xTextRange(xTextDocument->getText(), 
uno::UNO_QUERY);
-    uno::Reference<text::XText> xText(xTextRange->getText(), uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xTextRange = xTextDocument->getText();
+    uno::Reference<text::XText> xText = xTextRange->getText();
     xText->insertTextContent(xTextRange, xTextField, true);
     //Retrieving the contents for verification
     CPPUNIT_ASSERT_EQUAL(OUString("11/10/14 03:03 AM"), 
xTextField->getPresentation(false));
@@ -3924,10 +3923,9 @@ void SwUiWriterTest::testEmbeddedDataSource()
     uno::Reference<sdbc::XDataSource> 
xDataSource(xDatabaseContext->getByName("calc-data-source"), uno::UNO_QUERY);
     CPPUNIT_ASSERT(xDataSource.is());
     auto xConnection = xDataSource->getConnection("", "");
-    uno::Reference<container::XNameAccess> xTables(
+    uno::Reference<container::XNameAccess> xTables =
         css::uno::Reference<css::sdbcx::XTablesSupplier>(
-            xConnection, uno::UNO_QUERY_THROW)->getTables(),
-        uno::UNO_QUERY);
+            xConnection, uno::UNO_QUERY_THROW)->getTables();
     CPPUNIT_ASSERT(xTables.is());
     CPPUNIT_ASSERT(xTables->hasByName("Sheet1"));
     xConnection->close();
@@ -3940,11 +3938,10 @@ void SwUiWriterTest::testEmbeddedDataSource()
     // Data source has a table named Sheet1 after saving to a different 
directory.
     xDataSource.set(xDatabaseContext->getByName("calc-data-source"), 
uno::UNO_QUERY);
     CPPUNIT_ASSERT(xDataSource.is());
-    xConnection.set(xDataSource->getConnection("", ""), uno::UNO_QUERY);
-    xTables.set(
+    xConnection = xDataSource->getConnection("", "");
+    xTables =
         css::uno::Reference<css::sdbcx::XTablesSupplier>(

... etc. - the rest is truncated
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to