History

Fixes for code review

ksuprynowicz committed 4 years ago

Commit 586bd7f1 parent e9bfdd416 files · +142 −117Browse files

Showing the changes to libraries/script-engine/src/qtscript/ScriptEngineQtScript_cast.cpp (1 of 16 files). Show all

Unified · Split

libraries/script-engine/src/qtscript/ScriptEngineQtScript_cast.cpp+11−7
@@ -199,6 +199,7 @@ int ScriptEngineQtScript::computeCastPenalty(QScriptValue& val, int destTypeId) · 198 unmodified lines
199 if (val.isNumber()) {199 if (val.isNumber()) {
200 switch (destTypeId){200 switch (destTypeId){
201 case QMetaType::Bool:201 case QMetaType::Bool:
202 // Conversion to bool is acceptable, but numbers are preferred
202 return 5;203 return 5;
203 break;204 break;
204 case QMetaType::UInt:205 case QMetaType::UInt:
@@ -211,20 +212,24 @@ int ScriptEngineQtScript::computeCastPenalty(QScriptValue& val, int destTypeId) · 6 unmodified lines
211 case QMetaType::ULongLong:212 case QMetaType::ULongLong:
212 case QMetaType::LongLong:213 case QMetaType::LongLong:
213 case QMetaType::UShort:214 case QMetaType::UShort:
215 // Perfect case. JS doesn't have separate integer and floating point type
214 return 0;216 return 0;
215 break;217 break;
216 case QMetaType::QString:218 case QMetaType::QString:
217 case QMetaType::QByteArray:219 case QMetaType::QByteArray:
218 case QMetaType::QDateTime:220 case QMetaType::QDateTime:
219 case QMetaType::QDate:221 case QMetaType::QDate:
222 // Conversion to string should be avoided, it's probably not what we want
220 return 100;223 return 100;
221 break;224 break;
222 default:225 default:
226 // Other, not predicted cases
223 return 5;227 return 5;
224 }228 }
225 } else if (val.isString() || val.isDate() || val.isRegExp()) {229 } else if (val.isString() || val.isDate() || val.isRegExp()) {
226 switch (destTypeId){230 switch (destTypeId){
227 case QMetaType::Bool:231 case QMetaType::Bool:
232 // Conversion from to bool should be avoided if possible, it's probably not what we want
228 return 100;233 return 100;
229 case QMetaType::UInt:234 case QMetaType::UInt:
230 case QMetaType::ULong:235 case QMetaType::ULong:
@@ -236,12 +241,15 @@ int ScriptEngineQtScript::computeCastPenalty(QScriptValue& val, int destTypeId) · 5 unmodified lines
236 case QMetaType::ULongLong:241 case QMetaType::ULongLong:
237 case QMetaType::LongLong:242 case QMetaType::LongLong:
238 case QMetaType::UShort:243 case QMetaType::UShort:
244 // Conversion from to number should be avoided if possible, it's probably not what we want
239 return 100;245 return 100;
240 case QMetaType::QString:246 case QMetaType::QString:
247 // Perfect case
241 return 0;248 return 0;
242 case QMetaType::QByteArray:249 case QMetaType::QByteArray:
243 case QMetaType::QDateTime:250 case QMetaType::QDateTime:
244 case QMetaType::QDate:251 case QMetaType::QDate:
252 // String to string should be slightly preferred
245 return 5;253 return 5;
246 default:254 default:
247 return 5;255 return 5;
@@ -249,6 +257,7 @@ int ScriptEngineQtScript::computeCastPenalty(QScriptValue& val, int destTypeId) · 1 unmodified line
249 } else if (val.isBool() || val.isBoolean()) {257 } else if (val.isBool() || val.isBoolean()) {
250 switch (destTypeId){258 switch (destTypeId){
251 case QMetaType::Bool:259 case QMetaType::Bool:
260 // Perfect case
252 return 0;261 return 0;
253 break;262 break;
254 case QMetaType::UInt:263 case QMetaType::UInt:
@@ -261,12 +270,14 @@ int ScriptEngineQtScript::computeCastPenalty(QScriptValue& val, int destTypeId) · 6 unmodified lines
261 case QMetaType::ULongLong:270 case QMetaType::ULongLong:
262 case QMetaType::LongLong:271 case QMetaType::LongLong:
263 case QMetaType::UShort:272 case QMetaType::UShort:
273 // Using function with bool parameter should be preferred over converted bool to nimber
264 return 5;274 return 5;
265 break;275 break;
266 case QMetaType::QString:276 case QMetaType::QString:
267 case QMetaType::QByteArray:277 case QMetaType::QByteArray:
268 case QMetaType::QDateTime:278 case QMetaType::QDateTime:
269 case QMetaType::QDate:279 case QMetaType::QDate:
280 // Bool probably shouldn't be converted to string if there are better alternatives
270 return 50;281 return 50;
271 break;282 break;
272 default:283 default:
@@ -292,13 +303,6 @@ bool ScriptEngineQtScript::castValueToVariant(const QScriptValue& val, QVariant& · 19 unmodified lines
292 }303 }
293 }304 }
294 }305 }
295/* if (QMetaType(destTypeId).name() == "MenuItemProperties") {
296 qDebug() << "castValueToVariant MenuItemProperties " << destTypeId << "map size: " << _customTypes.size();
297 for (auto iter = _customTypes.keyBegin(); iter != _customTypes.keyEnd(); iter++){
298 qDebug() << (*iter);
299 }
300 printf("castValueToVariant MenuItemProperties");
301 }*/
302 306
303 if (destTypeId == qMetaTypeId<ScriptValue>()) {307 if (destTypeId == qMetaTypeId<ScriptValue>()) {
304 dest = QVariant::fromValue(ScriptValue(new ScriptValueQtWrapper(this, val)));308 dest = QVariant::fromValue(ScriptValue(new ScriptValueQtWrapper(this, val)));