Burak Can
021325f77f
Merge branch 'harmony' of github.com:mishoo/UglifyJS2 into harmony
2016-03-22 11:53:25 +02:00
Fábio Santos
a3f094013d
Don't mangle exported symbols
2016-03-22 11:44:21 +02:00
Fábio Santos
7b3e4d4fb2
Mangling externally imported names by using aliasing
2016-03-22 11:43:58 +02:00
Darío Javier Cravero
627083fa16
fix: don't fail if definition is undefined
...
Running `uglifyjs --verbose --compress --mangle --screw-ie8 class.js`
with
`class.js`:
```
class Foo {
bar() {
}
}
```
Fails with:
```
undefined:4041
return this.definition().unmangleable(options);
TypeError: Cannot read property 'unmangleable' of undefined
...
```
2016-03-22 11:43:57 +02:00
Fábio Santos
89dfbfd46b
Mangle class names correctly
2016-03-22 11:42:34 +02:00
Fábio Santos
805e027ab8
mangle class names
2016-03-22 11:42:34 +02:00
Fábio Santos
d757202b74
Do not mangle a name if it is in a destructuring vardef.
2016-03-22 11:41:00 +02:00
Fábio Santos
0a4270b358
Super!
2016-03-22 11:40:26 +02:00
Fábio Santos
aaa8f25bf0
Starting destructuring.
2016-03-22 11:39:49 +02:00
Fábio Santos
0bc4f6edb4
Don't mangle exported symbols
2016-03-14 12:54:05 +01:00
Fábio Santos
86b5248837
Mangling externally imported names by using aliasing
2016-03-14 12:54:05 +01:00
kzc
102d1b9137
#877 Ignore mangle sort option
2016-02-27 15:33:10 -05:00
alexlamsl
6547437725
preserve ThisBinding for side_effects
2016-02-17 19:34:01 +01:00
Darío Javier Cravero
0b303379c0
fix: don't fail if definition is undefined
...
Running `uglifyjs --verbose --compress --mangle --screw-ie8 class.js`
with
`class.js`:
```
class Foo {
bar() {
}
}
```
Fails with:
```
undefined:4041
return this.definition().unmangleable(options);
TypeError: Cannot read property 'unmangleable' of undefined
...
```
2016-02-10 10:17:32 +01:00
Mihai Bazon
915f907186
Add start/end in the arguments definition
...
(keeps my https://github.com/mishoo/jsinfo.el working)
2016-01-27 11:36:03 +02:00
Samuel Reed
1b703349cf
Tighten up @const regex.
2016-01-20 11:35:45 -06:00
Samuel Reed
4a7179ff91
Simplify by skipping extra tree walk.
2016-01-20 11:03:41 -06:00
Samuel Reed
f97da4294a
Use TreeWalker for more accurate @const results and update tests
2016-01-20 10:54:00 -06:00
Samuel Reed
8b71c6559b
Mark vars with /** @const */ pragma as consts so they can be eliminated.
...
Fixes older browser support for consts and allows more flexibility
in dead code removal.
2016-01-19 13:23:02 -06:00
Anthony Van de Gejuchte
6605d15783
Never mangle arguments and keep them in their scope
...
Fixes #892
Helped-by: kzc
2016-01-14 19:45:52 +01:00
Richard van Velzen
7f3dbb6df7
Merge branch 'master' into harmony
2015-12-26 17:59:38 +01:00
Fábio Santos
e076abdbf2
Mangle class names correctly
2015-11-21 13:59:18 +00:00
Fábio Santos
425613b0d2
mangle class names
2015-11-21 12:20:20 +00:00
Mihai Bazon
c898a26117
Build label def/refs info when figuring out scope
...
Fix #862
2015-11-12 11:48:06 +02:00
Mihai Bazon
7691bebea5
Rework has_directive
...
It's now available during tree walking, i.e. walker.has_directive("use
asm"), rather than as part of the scope. It's thus no longer necessary
to call `figure_out_scope` before codegen. Added special bits in the
code generator to overcome the fact that it doesn't inherit from
TreeWalker.
Fix #861
2015-11-11 22:15:25 +02:00
Richard van Velzen
b14496c742
Merge branch 'master' into harmony
...
Conflicts:
lib/compress.js
2015-10-12 08:54:44 +02:00
kzc
593677d2ff
Add proper support for "use asm"; blocks. Disable -c optimization within "use asm"; sections and preserve floating point literals in their original form. Non-asm.js sections are optimized as before. Asm.js sections can still be mangled and minified of whitespace. No special command line flags are required.
2015-10-07 10:00:28 +02:00
Fábio Santos
e99bc914ca
Do not mangle a name if it is in a destructuring vardef.
2015-08-21 12:04:26 +02:00
Fábio Santos
e80ed38772
Super!
2015-08-07 02:44:53 +01:00
Fábio Santos
32f76f7ff8
Starting destructuring.
2015-07-29 14:54:45 +02:00
Mihai Bazon
aa45f6586e
rename --prop-cache to --name-cache
...
... and support storing there variable names as well, to help with multiple
invocations when mangling toplevel.
2015-03-16 13:16:30 +02:00
Richard van Velzen
e37b67d013
Add an option to prevent function names from being mangled
...
See #552 . This is mostly useful for having the actual function names in traces.
2015-01-04 21:48:43 +01:00
Cheng Liangyu
fe06fc85d3
fix base54
2014-12-01 13:16:44 +08:00
Arnavion
7be680d3f8
Don't warn for an unreferenced exception symbol in a catch block.
2014-09-12 21:01:19 -07:00
Mihai Bazon
bf30dc3038
Mangle name of exception when --screw-ie8. Fix #430 .
...
The effect of not mangling it was visible only with --screw-ie8 (otherwise
the names would be mangled exactly because they leaked into the parent
scope).
2014-02-14 13:58:14 +02:00
Mihai Bazon
f65e55dff4
minor
2013-12-16 20:37:09 +02:00
colorhook
fa3300f314
bugfix #242
2013-12-16 15:53:43 +08:00
Mihai Bazon
8f35a363d9
AST_Catch shouldn't really inherit from AST_Scope. Fix #363
...
I hereby acknowledge that figure_out_scope has become a mess.
2013-12-05 13:30:29 +02:00
Mihai Bazon
d2190c2bf3
Properly scope catch identifier when --screw-ie8
...
Fix #344
2013-11-28 16:43:30 +02:00
Mihai Bazon
b214d3786f
Fix typo
2013-10-29 15:53:54 +02:00
Mihai Bazon
a14c6b6574
Avoid shadowing name of function expression with function argument
...
Close #179 , #326 , #327
2013-10-29 13:18:09 +02:00
Mihai Bazon
d09f0adae3
arguments outside of a function is an ordinary variable.
...
Fix #501
2013-10-17 18:20:33 +03:00
Mihai Bazon
85b527ba3d
Disallow continue referring to a non-IterationStatement. Fix #287
...
Simplifies handling of labels (their definition/references can be easily
figured out at parse time, no need to do it in `figure_out_scope`).
2013-09-02 19:36:16 +03:00
Mihai Bazon
9fc8a52142
Set "global" on undeclared SymbolDef-s
2013-05-22 13:08:19 +03:00
Michał Gołębiowski
75f0bbe6e8
renamed --screw-ie to --screw-ie8, documented it in README.md, indicated it doesn't break IE9+
2013-03-25 17:03:21 +01:00
Mihai Bazon
b14d3df3d2
Keep legit code working even when --screw-ie is not passed.
...
Previously:
Without `--screw-ie`, UglifyJS would always leak names of function
expressions into the containing scope, as if they were function
declarations. That was to emulate IE<9 behavior. Code relying on this
IE bug would continue to work properly after mangling, although it would
only work in IE (since other engines don't share the bug). Sometimes
this broke legitimage code (see #153 and #155 ).
With `--screw-ie` the names would not be leaked into the current scope,
working properly in legit cases; but still it broke legit code when
running in IE<9 (see #24 ).
Currently:
Regardless of the `--screw-ie` setting, the names will not be leaked.
Code relying on the IE bug will not work properly after mangling.
<evil laughter here>
Without `--screw-ie`: a hack has been added to the mangler to avoid
using the same name for a function expression and some other variable in
the same scope. This keeps legit code working, at the (negligible,
indeed) cost of one more identifier.
With `--screw-ie` you allow the mangler to name function expressions
with the same identifier as another variable in scope. After mangling
code might break in IE<9.
Oh man, the commit message is longer than the patch.
Fix #153 , #155
2013-03-22 18:04:46 +02:00
Mihai Bazon
9b1a40dfc3
Support mangling toplevel names
...
Close #127
2013-03-13 09:44:06 +02:00
Mihai Bazon
26746ce316
Add --screw-ie option
...
For now the implication is that UglifyJS will not leak a function
expression's name in the surrounding scope (IE < 9 does that).
(ref. mishoo/UglifyJS#485 )
2013-03-02 14:28:34 +02:00
Mihai Bazon
9e8ba27dcd
Fix handling of constants
...
Close #113
2013-02-06 11:15:31 +02:00
Mihai Bazon
6b14f7c224
Fix handling of labels in nested scopes
2013-01-04 14:17:33 +02:00