Godfrey Chan
cc2dc3acb0
Emit more efficient/concise "empty" ES6 ctor
...
When there are property assignments in a the class body of an inheriting
class, tsc current emit the following compilation:
```ts
class Foo extends Bar {
public foo = 1;
}
```
```js
class Foo extends Bar {
constructor(…args) {
super(…args);
this.foo = 1;
}
}
```
This introduces an unneeded local variable and might force a reification
of the `arguments` object (or otherwise reify the arguments into an
array).
This is particularly bad when that output is fed into another transpiler
like Babel. In Babel, you get something like this today:
```js
var Foo = (function (_Bar) {
_inherits(Foo, _Bar);
function Foo() {
_classCallCheck(this, Foo);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_Bar.call.apply(_Bar, [this].concat(args));
this.foo = 1;
}
return Foo;
})(Bar);
```
This causes a lot of needless work/allocations and some very strange
code (`.call.apply` o_0).
Admittedly, this is not strictly tsc’s problem; it could have done a
deeper analysis of the code and optimized out the extra dance. However,
tsc could also have emitted this simpler, more concise and semantically
equivalent code in the first place:
```js
class Foo extends Bar {
constructor() {
super(…arguments);
this.foo = 1;
}
}
```
Which compiles into the following in Babel:
```js
var Foo = (function (_Bar) {
_inherits(Foo, _Bar);
function Foo() {
_classCallCheck(this, Foo);
_Bar.apply(this, arguments);
this.foo = 1;
}
return Foo;
})(Bar);
```
Which is well-optimized (today) in most engines and much less confusing
to read.
As far as I can tell, the proposed compilation has exactly the same
semantics as before.
Fixes #10175
2016-08-06 23:24:44 -07:00
Wesley Wigham and GitHub
269b828538
Fix lssl task ( #9967 )
2016-08-05 14:16:29 -07:00
Yui and GitHub
ceab31cf0d
Port PR #10016 to Master ( #10100 )
...
* Treat namespaceExportDeclaration as declaration
* Update baselines
* wip - add tests
* Add tests
* Show "export namespace" for quick-info
2016-08-05 10:12:01 -07:00
Andy Hanson
9947ac2ece
Don't allow properties inherited from Object to be automatically included in TSX attributes
2016-08-04 14:13:07 -07:00
Yui and GitHub
10b36abc8f
[Release-2.0] Fix 9662: Visual Studio 2015 with TS2.0 gives incorrect @types path resolution errors ( #9867 )
...
* Change the shape of the shim layer to support getAutomaticTypeDirectives
* Change the key for looking up automatic type-directives
* Update baselines from change look-up name of type-directives
* Add @currentDirectory into the test
* Update baselines
* Fix linting error
* Address PR: fix spelling mistake
* Instead of return path of the type directive names just return type directive names
2016-08-04 07:43:54 -07:00
Andy and GitHub
0a8afc91f6
Merge pull request #10115 from Microsoft/export_specifiers_map
...
Add a helper function `getOrUpdateProperty` to prevent unprotected access to Maps.
2016-08-04 05:54:34 -07:00
Anders Hejlsberg and GitHub
14f0aa0ace
Merge pull request #10118 from Microsoft/limitTypeGuardAssertions
...
Limit "type guards as assertions" behavior
2016-08-03 14:59:19 -07:00
Anders Hejlsberg
12eb57c4d0
Fix linting error
2016-08-03 10:15:00 -07:00
Anders Hejlsberg
7ab6e11aaf
Limit type guards as assertions to incomplete types in loops
2016-08-03 10:00:37 -07:00
Andy Hanson
204f2c16c0
Add a helper function getOrUpdateProperty to prevent unprotected access to Maps.
2016-08-03 09:01:40 -07:00
Wesley Wigham and GitHub
0eeb9cbd0c
Fix #10083 - allowSyntheticDefaultImports alters getExternalModuleMember ( #10096 )
2016-08-02 12:34:23 -07:00
Nathan Shively-Sanders and GitHub
4a470bd27c
Merge pull request #9997 from Microsoft/re-add-strict-concat-signature
...
Re-add strict concat signature
2016-08-02 11:06:18 -07:00
Zhengbo Li and GitHub
f06413b8d4
Merge pull request #10035 from zhengbli/9522
...
Recreate program if baseUrl or paths changed in tsconfig
2016-08-01 17:15:03 -07:00
zhengbli
f78b9094be
CR feedback
2016-08-01 16:50:16 -07:00
Ryan Cavanaugh and GitHub
6caa2611cb
Merge pull request #10054 from SaschaNaz/jsxopening
...
Format JSX opening element
2016-08-01 15:50:43 -07:00
Ryan Cavanaugh and GitHub
2d20dbf25e
Merge pull request #9767 from RyanCavanaugh/fix9766
...
Emit parens around type-asserted binary operators
2016-08-01 15:44:48 -07:00
Anders Hejlsberg and GitHub
1435fb19a8
Merge pull request #10069 from Microsoft/bestChoiceType
...
Use "best choice type" for || and ?: operators
2016-08-01 15:26:57 -07:00
Anders Hejlsberg and GitHub
36b611334d
Merge pull request #10028 from Microsoft/fixDiscriminantInLoop
...
Fix discriminant in loop
2016-08-01 11:09:51 -07:00
Andy Hanson
cb1ea7be5d
Provide realpath for module resolution in LSHost
2016-08-01 09:47:52 -07:00
Anders Hejlsberg
ade89a6032
Fix issue related to this and #8383
2016-08-01 06:41:05 -07:00
Ryan Cavanaugh and GitHub
030fbdc0d5
Merge pull request #10046 from RyanCavanaugh/fix10045
...
Correctly check for ambient class flag
2016-07-31 23:27:14 -05:00
Kagami Sascha Rosylight
5c4c997efa
jsx opening element formatting
2016-08-01 00:35:34 +09:00
Anders Hejlsberg
fc85bc5a8a
Use "best choice type" for || and ?: operators
2016-07-31 07:57:01 -07:00
Ryan Cavanaugh and GitHub
1d979ccc8c
Merge pull request #9951 from hckr/patch-1
...
Fix typo in comment for MAX_SAFE_INTEGER
2016-07-30 08:46:08 -07:00
Ryan Cavanaugh
cbb06ab13a
Correctly check for ambient class flag
2016-07-30 08:17:46 -07:00
zhengbli
0f1585f0af
recreate program if baseUrl or paths changed in tsconfig
2016-07-29 11:02:33 -07:00
Ryan Cavanaugh and GitHub
33f72c7905
Merge pull request #8636 from RyanCavanaugh/classOrdering
...
Issue an error when a derived class precedes its base class
2016-07-29 10:23:39 -07:00
Ryan Cavanaugh
5e86a103c8
Fix tests and merge
2016-07-29 08:34:14 -07:00
Andy and GitHub
c6960303db
Merge pull request #9984 from Microsoft/node_kind
...
Unify nodeKind implementations for navigationBar and navigateTo
2016-07-29 08:19:07 -07:00
Anders Hejlsberg
3e3b80826f
Properly reset type guards in loops
2016-07-29 07:54:19 -07:00
Andy and GitHub
013744bf85
Merge pull request #9994 from Microsoft/local_abstract_class
...
Allow an abstract class to appear in a local scope
2016-07-28 13:46:50 -07:00
Anders Hejlsberg and GitHub
0c131fab68
Merge pull request #9407 from Microsoft/literalTypes
...
Number, enum, and boolean literal types
2016-07-28 12:09:49 -07:00
Andy Hanson
a25b6640db
Fix lint error
2016-07-28 06:03:43 -07:00
Anders Hejlsberg
a5fcd5f94b
Display enum member types using qualified names
2016-07-27 17:10:06 -07:00
Nathan Shively-Sanders
09f518243d
Re-add concat overload to support inferring tuples
2016-07-27 15:33:36 -07:00
Andy Hanson
80b7613b0a
Allow an abstract class to appear in a local scope
2016-07-27 12:05:45 -07:00
Andy Hanson
958620b46d
Fix lint errors
2016-07-27 08:30:22 -07:00
Andy Hanson
38e201eb7d
Fix test and rename a function
2016-07-27 07:46:39 -07:00
Andy Hanson
30761ef659
Unify nodeKind implementations for navigationBar and navigateTo
2016-07-27 06:31:56 -07:00
Andy and GitHub
c578367c26
Merge pull request #9969 from Microsoft/class_expression_static_property
...
Support emitting static properties for classes with no name
2016-07-27 05:37:05 -07:00
Wesley Wigham and GitHub
a32234c562
Convert getErrorBaseline to use canonical diagnostic formatting ( #9708 )
...
* Convert getErrorBaseline to use canonical diagnostic formatting
* Fix lint
* Found another clone of format diagnostic - consolidate
* Fully declone
2016-07-26 15:22:25 -07:00
Wesley Wigham and GitHub
e12f2d8232
Add assertion whitespace lint rule ( #9931 )
...
* Add assertion whitespace lint rule
* Fix typo
* Add the word `Rule` to Jakefile
2016-07-26 13:29:53 -07:00
Andy Hanson
0e0220d786
Support emitting static properties for classes with no name
2016-07-26 13:28:04 -07:00
Nathan Shively-Sanders and GitHub
670f0c91b3
Merge pull request #9956 from Microsoft/bind-window-performance-now
...
In ts.performance.now, bind window.performance.now
2016-07-26 11:31:54 -07:00
Wesley Wigham and GitHub
acb003adce
Add lint enforcing line endings ( #9942 )
2016-07-26 10:28:49 -07:00
Nathan Shively-Sanders
1b1560861c
In ts.performance.now, bind window.performance.now
...
Using an arrow function. Previously, it was set directly to
window.performance.now, which fails when used on Chrome.
2016-07-26 10:13:30 -07:00
Jakub Młokosiewicz and GitHub
34744802bc
Fix typo in comment for MAX_SAFE_INTEGER
2016-07-26 14:58:16 +02:00
Nathan Shively-Sanders and GitHub
ac2c41c081
Merge pull request #9904 from Microsoft/protected-constructors-accessible-in-subclass-static-methods
...
Protected constructors accessible in subclass static methods
2016-07-25 12:38:07 -07:00
Anatoly Ressin and Wesley Wigham
8cbbcd03f0
Fixed broken singleAsteriskRegex. Fixes #9918 ( #9920 )
2016-07-25 12:35:15 -07:00
Anders Hejlsberg
a1a8725456
Optimize type inference
2016-07-25 09:05:29 -07:00