From 0601b437a475cb792e5f3dbe6a8bf001cc18d94d Mon Sep 17 00:00:00 2001 From: Mattias Gaertner Date: Thu, 19 Apr 2018 12:42:00 +0000 Subject: [PATCH] pas2js: added option -JoUseStrict git-svn-id: trunk@38793 - --- packages/pastojs/src/fppas2js.pp | 2 +- packages/pastojs/src/pas2jscompiler.pp | 22 +++++++++++++++++----- utils/pas2js/dist/rtl.js | 1 - utils/pas2js/docs/translation.html | 1 + 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/pastojs/src/fppas2js.pp b/packages/pastojs/src/fppas2js.pp index 16b46a5c99..a0463adddb 100644 --- a/packages/pastojs/src/fppas2js.pp +++ b/packages/pastojs/src/fppas2js.pp @@ -312,9 +312,9 @@ Works: - COM: property in class, property in interface - COM: with interface do - COM: for interface in ... do + - COM: pass IntfVar to untyped parameter ToDos: -- replace let in rtl.js - option to disable use strict - for i in jsvalue do - for i in tjsobject do diff --git a/packages/pastojs/src/pas2jscompiler.pp b/packages/pastojs/src/pas2jscompiler.pp index e947463cb2..2b4839bb33 100644 --- a/packages/pastojs/src/pas2jscompiler.pp +++ b/packages/pastojs/src/pas2jscompiler.pp @@ -101,11 +101,12 @@ type coKeepNotUsedDeclarationsWPO, coSourceMapCreate, coSourceMapInclude, - coSourceMapXSSIHeader + coSourceMapXSSIHeader, + coUseStrict ); TP2jsCompilerOptions = set of TP2jsCompilerOption; const - DefaultP2jsCompilerOptions = [coShowErrors,coSourceMapXSSIHeader]; + DefaultP2jsCompilerOptions = [coShowErrors,coSourceMapXSSIHeader,coUseStrict]; coShowAll = [coShowErrors..coShowUsedTools]; coO1Enable = [coEnumValuesAsNumbers]; coO1Disable = [coKeepNotUsedPrivates,coKeepNotUsedDeclarationsWPO]; @@ -136,7 +137,8 @@ const 'Keep not used declarations (WPO)', 'Create source map', 'Include Pascal sources in source map', - 'Prepend XSSI protection )]} to source map' + 'Prepend XSSI protection )]} to source map', + 'Use strict' ); //------------------------------------------------------------------------------ @@ -786,9 +788,16 @@ end; function TPas2jsCompilerFile. GetInitialConverterOptions: TPasToJsConverterOptions; begin - Result:=DefaultPasToJSOptions+[coUseStrict]; + Result:=DefaultPasToJSOptions; + + if coUseStrict in Compiler.Options then + Include(Result,fppas2js.coUseStrict) + else + Exclude(Result,fppas2js.coUseStrict); + if coEnumValuesAsNumbers in Compiler.Options then Include(Result,fppas2js.coEnumNumbers); + if coLowerCase in Compiler.Options then Include(Result,fppas2js.coLowerCase) else @@ -3154,8 +3163,10 @@ begin Enable:=c='+'; Delete(Identifier,length(Identifier),1); end; - if CompareText(Identifier,'SearchLikeFPC')=0 then + if SameText(Identifier,'SearchLikeFPC') then FileCache.SearchLikeFPC:=Enable + else if SameText(Identifier,'UseStrict') then + SetOption(coUseStrict,Enable) else UnknownParam; end; @@ -3874,6 +3885,7 @@ begin l(' -Jm- : disable generating source maps'); l(' -Jo : Enable or disable extra option. The x is case insensitive:'); l(' -JoSearchLikeFPC : search source files like FPC, default: search case insensitive.'); + l(' -JoUseStrict : add "use strict" to modules, default.'); l(' -Ju : Add to foreign unit paths. Foreign units are not compiled.'); if PrecompileFormats.Count>0 then begin diff --git a/utils/pas2js/dist/rtl.js b/utils/pas2js/dist/rtl.js index 8cedfed6ae..f74e66b348 100644 --- a/utils/pas2js/dist/rtl.js +++ b/utils/pas2js/dist/rtl.js @@ -470,7 +470,6 @@ var rtl = { }, addIntf: function (aclass, intf, map){ - 'use strict'; function jmp(fn){ if (typeof(fn)==="function"){ return function(){ return fn.apply(this.$o,arguments); }; diff --git a/utils/pas2js/docs/translation.html b/utils/pas2js/docs/translation.html index 5e3fc2f07b..8fb57303a0 100644 --- a/utils/pas2js/docs/translation.html +++ b/utils/pas2js/docs/translation.html @@ -155,6 +155,7 @@ Put + after a boolean switch option to enable it, - to disable it -Jm- : disable generating source maps -Jo<x> : Enable or disable extra option. The x is case insensitive: -JoSearchLikeFPC : search source files like FPC, default: search case insensitive. + -JoUseStrict : add "use strict" to modules, default. -Ju<x> : Add <x> to foreign unit paths. Foreign units are not compiled. -l : Write logo -MDelphi: Delphi 7 compatibility mode