diff options
author | Richard Weickelt <richard@weickelt.de> | 2021-02-13 16:00:25 +0100 |
---|---|---|
committer | Richard Weickelt <richard@weickelt.de> | 2021-02-15 21:38:33 +0000 |
commit | f8c18f9a4e2906330638f17f612ee62325a88dc0 (patch) | |
tree | f7810768d3fa17da54c15d77d1db5f469f11bc53 /share | |
parent | 91c2a99b81c2c3fc6a22787c3b471a47515abf00 (diff) |
Test for array-like objects with instanceof Array
Array.isArray() seemed to work for arrays created in scripts as well as
for QStringList and QVariantList created in C++ when using QtScript.
QJSEngine is more strict (see the comments in QTBUG-45018). One way to
work around that problem is to use instanceof Array instead.
Change-Id: I0f1c8757a5ab2f82e26eff19a8b5ecf667bb04b1
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'share')
-rw-r--r-- | share/qbs/imports/qbs/ModUtils/utils.js | 2 | ||||
-rw-r--r-- | share/qbs/imports/qbs/Probes/path-probe.js | 4 | ||||
-rw-r--r-- | share/qbs/module-providers/Qt/templates/android_support.qbs | 2 | ||||
-rw-r--r-- | share/qbs/module-providers/Qt/templates/plugin_support.qbs | 2 | ||||
-rw-r--r-- | share/qbs/modules/Exporter/pkgconfig/pkgconfig.js | 6 | ||||
-rw-r--r-- | share/qbs/modules/Exporter/qbs/qbsexporter.js | 2 | ||||
-rw-r--r-- | share/qbs/modules/cpp/gcc.js | 2 | ||||
-rw-r--r-- | share/qbs/modules/cpp/iar.js | 2 | ||||
-rw-r--r-- | share/qbs/modules/cpp/keil.js | 2 | ||||
-rw-r--r-- | share/qbs/modules/cpp/msvc.js | 2 | ||||
-rw-r--r-- | share/qbs/modules/cpp/sdcc.js | 2 | ||||
-rw-r--r-- | share/qbs/modules/java/JavaModule.qbs | 2 |
12 files changed, 15 insertions, 15 deletions
diff --git a/share/qbs/imports/qbs/ModUtils/utils.js b/share/qbs/imports/qbs/ModUtils/utils.js index a502e6323..0433fa46e 100644 --- a/share/qbs/imports/qbs/ModUtils/utils.js +++ b/share/qbs/imports/qbs/ModUtils/utils.js @@ -48,7 +48,7 @@ function mergeCFiles(inputs, outputFilePath) } function sanitizedList(list, product, fullPropertyName) { - if (!Array.isArray(list)) + if (!(list instanceof Array)) return list; var filterFunc = function(elem) { if (typeof elem === "string" && elem.length === 0) { diff --git a/share/qbs/imports/qbs/Probes/path-probe.js b/share/qbs/imports/qbs/Probes/path-probe.js index b1bdf9930..1f55dcf32 100644 --- a/share/qbs/imports/qbs/Probes/path-probe.js +++ b/share/qbs/imports/qbs/Probes/path-probe.js @@ -36,7 +36,7 @@ var ModUtils = require("qbs.ModUtils"); function asStringList(key, value) { if (typeof(value) === "string") return [value]; - if (Array.isArray(value)) + if (value instanceof Array) return value; throw key + " must be a string or a stringList"; } @@ -45,7 +45,7 @@ function canonicalSelectors(selectors, nameSuffixes) { var mapper = function(selector) { if (typeof(selector) === "string") return {names : [selector]}; - if (Array.isArray(selector)) + if (selector instanceof Array) return {names : selector}; // dict if (!selector.names) diff --git a/share/qbs/module-providers/Qt/templates/android_support.qbs b/share/qbs/module-providers/Qt/templates/android_support.qbs index a0eb9ef41..87c980448 100644 --- a/share/qbs/module-providers/Qt/templates/android_support.qbs +++ b/share/qbs/module-providers/Qt/templates/android_support.qbs @@ -197,7 +197,7 @@ Module { var prefixDirs = product.Qt.android_support.extraPrefixDirs; if (prefixDirs && prefixDirs.length > 0) f.writeLine('"extraPrefixDirs": ' + JSON.stringify(prefixDirs) + ','); - if (Array.isArray(product.qmlImportPaths) && product.qmlImportPaths.length > 0) + if ((product.qmlImportPaths instanceof Array) && product.qmlImportPaths.length > 0) f.writeLine('"qml-import-paths": "' + product.qmlImportPaths.join(',') + '",'); if (Utilities.versionCompare(product.Qt.android_support.version, "6.0") >= 0) { diff --git a/share/qbs/module-providers/Qt/templates/plugin_support.qbs b/share/qbs/module-providers/Qt/templates/plugin_support.qbs index 1de923f17..19a739589 100644 --- a/share/qbs/module-providers/Qt/templates/plugin_support.qbs +++ b/share/qbs/module-providers/Qt/templates/plugin_support.qbs @@ -32,7 +32,7 @@ Module { newValue = []; else if (typeof newValue == "string") newValue = [newValue]; - if (!Array.isArray(newValue)) + if (!newValue instanceof Array) throw "Invalid value '" + newValue + "' in Qt.plugin_support.pluginsByType"; eppt[pluginType] = (eppt[pluginType] || []).uniqueConcat(newValue); } diff --git a/share/qbs/modules/Exporter/pkgconfig/pkgconfig.js b/share/qbs/modules/Exporter/pkgconfig/pkgconfig.js index 093be4c4b..52b4dffe3 100644 --- a/share/qbs/modules/Exporter/pkgconfig/pkgconfig.js +++ b/share/qbs/modules/Exporter/pkgconfig/pkgconfig.js @@ -44,9 +44,9 @@ function writeEntry(product, file, key, propertyName, required, additionalValues var value = product.Exporter.pkgconfig[propertyName]; if (additionalValues && additionalValues.length > 0) value = (value || []).concat(additionalValues); - var valueIsNotEmpty = value && (!Array.isArray(value) || value.length > 0); + var valueIsNotEmpty = value && (!(value instanceof Array) || value.length > 0); if (valueIsNotEmpty) { - if (Array.isArray(value)) + if (value instanceof Array) value = value.join(' '); file.writeLine(key + ": " + value); } else if (required) { @@ -92,7 +92,7 @@ function collectAutodetectedData(topLevelProduct) var value = transformFunc ? eval("(" + transformFunc + ")(product, moduleName, propertyName, originalValue)") : originalValue; - if (Array.isArray(value)) + if (value instanceof Array) value.forEach(function(v, i, a) { a[i] = quoteAndPrefixify(v); }); else if (value) value = quoteAndPrefixify(value); diff --git a/share/qbs/modules/Exporter/qbs/qbsexporter.js b/share/qbs/modules/Exporter/qbs/qbsexporter.js index d3cdb7c03..be46372c3 100644 --- a/share/qbs/modules/Exporter/qbs/qbsexporter.js +++ b/share/qbs/modules/Exporter/qbs/qbsexporter.js @@ -113,7 +113,7 @@ function checkValuePrefix(name, value, forbiddenPrefix, prefixDescription) function stringifyValue(project, product, moduleInstallDir, prop, value) { - if (Array.isArray(value)) { + if (value instanceof Array) { var repr = "["; for (var i = 0; i < value.length; ++i) { repr += stringifyValue(project, product, moduleInstallDir, prop, value[i]) + ", "; diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js index 2c7d0b128..f49609f94 100644 --- a/share/qbs/modules/cpp/gcc.js +++ b/share/qbs/modules/cpp/gcc.js @@ -132,7 +132,7 @@ function collectLibraryDependencies(product, isDarwin) { if (!obj.cpp) return; function ensureArray(a) { - return Array.isArray(a) ? a : []; + return (a instanceof Array) ? a : []; } function sanitizedModuleListProperty(obj, moduleName, propertyName) { return ensureArray(ModUtils.sanitizedModuleProperty(obj, moduleName, propertyName)); diff --git a/share/qbs/modules/cpp/iar.js b/share/qbs/modules/cpp/iar.js index 183b2e0cd..d25b74324 100644 --- a/share/qbs/modules/cpp/iar.js +++ b/share/qbs/modules/cpp/iar.js @@ -575,7 +575,7 @@ function collectLibraryDependencies(product) { if (!obj.cpp) return; function ensureArray(a) { - return Array.isArray(a) ? a : []; + return (a instanceof Array) ? a : []; } function sanitizedModuleListProperty(obj, moduleName, propertyName) { return ensureArray(ModUtils.sanitizedModuleProperty(obj, moduleName, propertyName)); diff --git a/share/qbs/modules/cpp/keil.js b/share/qbs/modules/cpp/keil.js index 1e8169853..7303a5453 100644 --- a/share/qbs/modules/cpp/keil.js +++ b/share/qbs/modules/cpp/keil.js @@ -534,7 +534,7 @@ function collectLibraryDependencies(product) { if (!obj.cpp) return; function ensureArray(a) { - return Array.isArray(a) ? a : []; + return (a instanceof Array) ? a : []; } function sanitizedModuleListProperty(obj, moduleName, propertyName) { return ensureArray(ModUtils.sanitizedModuleProperty(obj, moduleName, propertyName)); diff --git a/share/qbs/modules/cpp/msvc.js b/share/qbs/modules/cpp/msvc.js index df1f5eb5b..566059610 100644 --- a/share/qbs/modules/cpp/msvc.js +++ b/share/qbs/modules/cpp/msvc.js @@ -354,7 +354,7 @@ function collectLibraryDependencies(product) { if (!obj.cpp) return; function ensureArray(a) { - return Array.isArray(a) ? a : []; + return (a instanceof Array) ? a : []; } function sanitizedModuleListProperty(obj, moduleName, propertyName) { return ensureArray(ModUtils.sanitizedModuleProperty(obj, moduleName, propertyName)); diff --git a/share/qbs/modules/cpp/sdcc.js b/share/qbs/modules/cpp/sdcc.js index fb37b801f..6f5fcc3d6 100644 --- a/share/qbs/modules/cpp/sdcc.js +++ b/share/qbs/modules/cpp/sdcc.js @@ -202,7 +202,7 @@ function collectLibraryDependencies(product) { if (!obj.cpp) return; function ensureArray(a) { - return Array.isArray(a) ? a : []; + return (a instanceof Array) ? a : []; } function sanitizedModuleListProperty(obj, moduleName, propertyName) { return ensureArray(ModUtils.sanitizedModuleProperty(obj, moduleName, propertyName)); diff --git a/share/qbs/modules/java/JavaModule.qbs b/share/qbs/modules/java/JavaModule.qbs index 71f7d8432..c3efb15bf 100644 --- a/share/qbs/modules/java/JavaModule.qbs +++ b/share/qbs/modules/java/JavaModule.qbs @@ -240,7 +240,7 @@ Module { if (!product.java._tagJniHeaders) { for (var i = 0; i < artifacts.length; ++i) { var a = artifacts[i]; - if (Array.isArray(a.fileTags)) + if (a.fileTags instanceof Array) a.fileTags = a.fileTags.filter(function(tag) { return tag != "hpp"; }); } } |