[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdevelop] plugins: Don't ask for compiler-specific includes in QmlJS
From:       Aaron Puchert <null () kde ! org>
Date:       2017-11-13 23:32:56
Message-ID: E1eEODo-0001Tt-Aw () code ! kde ! org
[Download RAW message or body]

Git commit 3512f8906466d9602f6faf8f0a64f9dd8d930201 by Aaron Puchert.
Committed on 13/11/2017 at 23:17.
Pushed by aaronpuchert into branch 'master'.

Don't ask for compiler-specific includes in QmlJS

Summary:
We can't provide these, since there is no QmlJS compiler.

The entire design is a bit problematic, because the QmlJS plugin asks
the DefinesAndIncludesManager for include directories, but that manager
is somehow tied to the idea of using the configured compiler to provide
additional includes and defines. However, the configured compiler is
obviously only used for C/C++ and similar languages, not QmlJS.

Reviewers: #kdevelop, mwolff

Reviewed By: #kdevelop, mwolff

Subscribers: mwolff, kdevelop-devel

Differential Revision: https://phabricator.kde.org/D8654

M  +19   -8    plugins/custom-definesandincludes/definesandincludesmanager.cpp
M  +3    -3    plugins/custom-definesandincludes/definesandincludesmanager.h
M  +9    -3    plugins/custom-definesandincludes/idefinesandincludesmanager.h
M  +5    -2    plugins/qmljs/qmljsparsejob.cpp

https://commits.kde.org/kdevelop/3512f8906466d9602f6faf8f0a64f9dd8d930201

diff --git a/plugins/custom-definesandincludes/definesandincludesmanager.cpp \
b/plugins/custom-definesandincludes/definesandincludesmanager.cpp index \
                27ca304f1b..4092a76535 100644
--- a/plugins/custom-definesandincludes/definesandincludesmanager.cpp
+++ b/plugins/custom-definesandincludes/definesandincludesmanager.cpp
@@ -264,22 +264,33 @@ void \
DefinesAndIncludesManager::registerProvider(IDefinesAndIncludesManager::Pro  \
m_providers.push_back(provider);  }
 
-Defines DefinesAndIncludesManager::defines(const QString& path) const
+Defines DefinesAndIncludesManager::defines(const QString& path, Type type) const
 {
-    Defines ret = m_settings->provider()->defines(nullptr);
-    merge(&ret, m_noProjectIPM->includesAndDefines(path).second);
+    Defines ret;
+    if ( type & CompilerSpecific ) {
+        merge(&ret, m_settings->provider()->defines(nullptr));
+    }
+    if ( type & ProjectSpecific ) {
+        merge(&ret, m_noProjectIPM->includesAndDefines(path).second);
+    }
     return ret;
 }
 
-Path::List DefinesAndIncludesManager::includes(const QString& path) const
+Path::List DefinesAndIncludesManager::includes(const QString& path, Type type) const
 {
-    return m_settings->provider()->includes(nullptr) 
-           + m_noProjectIPM->includesAndDefines(path).first;
+    Path::List ret;
+    if ( type & CompilerSpecific ) {
+        ret += m_settings->provider()->includes(nullptr);
+    }
+    if ( type & ProjectSpecific ) {
+        ret += m_noProjectIPM->includesAndDefines(path).first;
+    }
+    return ret;
 }
 
-Path::List DefinesAndIncludesManager::frameworkDirectories(const QString& /* path \
*/) const +Path::List DefinesAndIncludesManager::frameworkDirectories(const QString& \
/* path */, Type type) const  {
-    return m_settings->provider()->frameworkDirectories(nullptr);
+    return (type & CompilerSpecific) ? \
m_settings->provider()->frameworkDirectories(nullptr) : Path::List();  }
 
 void DefinesAndIncludesManager::openConfigurationDialog(const QString& pathToFile)
diff --git a/plugins/custom-definesandincludes/definesandincludesmanager.h \
b/plugins/custom-definesandincludes/definesandincludesmanager.h index \
                d3b7a575c1..6114b51e01 100644
--- a/plugins/custom-definesandincludes/definesandincludesmanager.h
+++ b/plugins/custom-definesandincludes/definesandincludesmanager.h
@@ -52,9 +52,9 @@ public:
     ///@return list of all custom framework directories for @p item
     KDevelop::Path::List frameworkDirectories( KDevelop::ProjectBaseItem* item, Type \
type ) const override;  
-    KDevelop::Defines defines( const QString& path ) const override;
-    KDevelop::Path::List includes( const QString& path ) const override;
-    KDevelop::Path::List frameworkDirectories(const QString& path) const override;
+    KDevelop::Defines defines( const QString& path, Type type = All ) const \
override; +    KDevelop::Path::List includes( const QString& path, Type type = All ) \
const override; +    KDevelop::Path::List frameworkDirectories(const QString& path, \
Type type = All) const override;  
     void registerProvider( Provider* provider ) override;
     bool unregisterProvider( Provider* provider ) override;
diff --git a/plugins/custom-definesandincludes/idefinesandincludesmanager.h \
b/plugins/custom-definesandincludes/idefinesandincludesmanager.h index \
                ae93ddea97..2b47302e10 100644
--- a/plugins/custom-definesandincludes/idefinesandincludesmanager.h
+++ b/plugins/custom-definesandincludes/idefinesandincludesmanager.h
@@ -98,34 +98,40 @@ public:
     };
 
     ///@param item project item
+    ///@param type Data sources to be used.
     ///@return list of defines for @p item
     ///NOTE: call it from the foreground thread only.
     virtual Defines defines( ProjectBaseItem* item, Type type = All ) const = 0;
 
     ///@param item project item
+    ///@param type Data sources to be used.
     ///@return list of include directories/files for @p item
     ///NOTE: call it from the foreground thread only.
     virtual Path::List includes( ProjectBaseItem* item, Type type = All ) const = 0;
 
     ///@param item project item
+    ///@param type Data sources to be used.
     ///@return list of framework directories for @p item
     ///NOTE: call it from the foreground thread only.
     virtual Path::List frameworkDirectories( ProjectBaseItem* item, Type type = All \
) const = 0;  
     ///@param path path to an out-of-project file.
+    ///@param type Data sources to be used.
     ///@return list of defines for @p path
     ///NOTE: call it from the foreground thread only.
-    virtual Defines defines( const QString& path ) const = 0;
+    virtual Defines defines( const QString& path, Type type = All ) const = 0;
 
     ///@param path path to an out-of-project file.
+    ///@param type Data sources to be used.
     ///@return list of include directories/files for @p path
     ///NOTE: call it from the foreground thread only.
-    virtual Path::List includes( const QString& path ) const = 0;
+    virtual Path::List includes( const QString& path, Type type = All ) const = 0;
 
     ///@param path path to an out-of-project file.
+    ///@param type Data sources to be used.
     ///@return list of framework directories for @p path
     ///NOTE: call it from the foreground thread only.
-    virtual Path::List frameworkDirectories( const QString& path ) const = 0;
+    virtual Path::List frameworkDirectories( const QString& path, Type type = All ) \
const = 0;  
     /**
      * Computes include directories in background thread.
diff --git a/plugins/qmljs/qmljsparsejob.cpp b/plugins/qmljs/qmljsparsejob.cpp
index e3f99b09d9..8db638e842 100644
--- a/plugins/qmljs/qmljsparsejob.cpp
+++ b/plugins/qmljs/qmljsparsejob.cpp
@@ -83,12 +83,15 @@ QmlJsParseJob::QmlJsParseJob(const IndexedString& url, \
ILanguageSupport* languag  if (auto file = findProjectFileItem(url)) {
         QmlJS::Cache::instance().setFileCustomIncludes(
             url,
-            IDefinesAndIncludesManager::manager()->includes(file)
+            IDefinesAndIncludesManager::manager()->includes(file,
+                IDefinesAndIncludesManager::Type(
+                    IDefinesAndIncludesManager::ProjectSpecific | \
IDefinesAndIncludesManager::UserDefined))  );
     } else {
         QmlJS::Cache::instance().setFileCustomIncludes(
             url,
-            IDefinesAndIncludesManager::manager()->includes(url.str())
+            IDefinesAndIncludesManager::manager()->includes(url.str(),
+                IDefinesAndIncludesManager::ProjectSpecific)
         );
     }
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic