From 78e7f59982902209638e09951402d8c07872a485 Mon Sep 17 00:00:00 2001 From: michael Date: Wed, 1 Mar 2017 17:41:16 +0000 Subject: [PATCH] * Patch from Mattias Gaertner - external vars - untyped parameters - varargs - SetLength(s,len) is now converted to s.length=len - destructor now clears references - dynamic arrays now are never null. - anArr:=nil becomes anArr = [] - anArr=nil becomes anArr.length==0 - passing nil to an array parameter passes [] - length(anArr) becomes anArr.length - High(anArr) becomes anArr.length-1 - sets now uses references when assigning and passing to a parameter. Far less clone operations. git-svn-id: trunk@35505 - --- utils/pas2js/dist/rtl.js | 97 +++++++++++++++++++++++++--------------- 1 file changed, 61 insertions(+), 36 deletions(-) diff --git a/utils/pas2js/dist/rtl.js b/utils/pas2js/dist/rtl.js index d3181cef36..5224ca6902 100644 --- a/utils/pas2js/dist/rtl.js +++ b/utils/pas2js/dist/rtl.js @@ -40,38 +40,50 @@ var rtl = { rtl.debug('Warn: ',s); }, - isArray: function isArray(a) { + isArray: function(a) { return a instanceof Array; }, - isNumber: function isNumber(n){ + isNumber: function(n){ return typeof(n)=="number"; }, - isInteger: function isInteger(A){ + isInteger: function(A){ return Math.floor(A)===A; }, - isBoolean: function isBoolean(b){ + isBoolean: function(b){ return typeof(b)=="boolean"; }, - isString: function isString(s){ + isString: function(s){ return typeof(s)=="string"; }, - isObject: function isObject(o){ + isObject: function(o){ return typeof(o)=="object"; }, - isFunction: function isFunction(f){ + isFunction: function(f){ return typeof(f)=="function"; }, - isNull: function isNull(o){ + isNull: function(o){ return (o==null && typeof(o)=='object') || o==undefined; }, + isRecord: function(r){ + return (typeof(r)=="function") && (typeof(r.$create) == "function"); + }, + + isClass: function(c){ + return (typeof(o)=="object") && (o.$class == o); + }, + + isClassInstance: function(c){ + return (typeof(o)=="object") && (o.$class == Object.getPrototypeOf(o)); + }, + hasString: function(s){ return rtl.isString(s) && (s.length>0); }, @@ -97,11 +109,12 @@ var rtl = { run: function(module_name){ if (module_name==undefined) module_name='program'; + if (rtl.debug_load_units) rtl.debug('rtl.run module="'+module_name+'"'); var module = pas[module_name]; rtl.loadintf(module); rtl.loadimpl(module); if (module_name=='program'){ - rtl.debug('running $main'); + if (rtl.debug_load_units) rtl.debug('running $main'); pas.program.$main(); } return pas.System.ExitCode; @@ -109,14 +122,14 @@ var rtl = { loadintf: function(module){ if (module.state>rtl.m_loading_intf) return; // already finished - rtl.debug('loadintf: '+module.$name); + if (rtl.debug_load_units) rtl.debug('loadintf: '+module.$name); if (module.$state==rtl.m_loading_intf) rtl.error('unit cycle detected "'+module.$name+'"'); module.$state=rtl.m_loading_intf; // load interfaces of interface useslist rtl.loaduseslist(module,module.$intfuseslist,rtl.loadintf); // run interface - rtl.debug('loadintf: run intf of '+module.$name); + if (rtl.debug_load_units) rtl.debug('loadintf: run intf of '+module.$name); module.$code(module.$intfuseslist,module); // success module.$state=rtl.m_intf_loaded; @@ -127,7 +140,7 @@ var rtl = { if (useslist==undefined) return; for (var i in useslist){ var unitname=useslist[i]; - //rtl.debug('loaduseslist of "'+module.name+'" uses="'+unitname+'"'); + if (rtl.debug_load_units) rtl.debug('loaduseslist of "'+module.name+'" uses="'+unitname+'"'); if (pas[unitname]==undefined) rtl.error('module "'+module.$name+'" misses "'+unitname+'"'); f(pas[unitname]); @@ -137,7 +150,7 @@ var rtl = { loadimpl: function(module){ if (module.$state>=rtl.m_loading_impl) return; // already processing if (module.$state