Commit Graph
8818 Commits
Author SHA1 Message Date
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 WighamandGitHub 269b828538 Fix lssl task (#9967) 2016-08-05 14:16:29 -07:00
YuiandGitHub 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
YuiandGitHub 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
AndyandGitHub 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 HejlsbergandGitHub 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 WighamandGitHub 0eeb9cbd0c Fix #10083 - allowSyntheticDefaultImports alters getExternalModuleMember (#10096) 2016-08-02 12:34:23 -07:00
Nathan Shively-SandersandGitHub 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 LiandGitHub 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 CavanaughandGitHub 6caa2611cb Merge pull request #10054 from SaschaNaz/jsxopening
Format JSX opening element
2016-08-01 15:50:43 -07:00
Ryan CavanaughandGitHub 2d20dbf25e Merge pull request #9767 from RyanCavanaugh/fix9766
Emit parens around type-asserted binary operators
2016-08-01 15:44:48 -07:00
Anders HejlsbergandGitHub 1435fb19a8 Merge pull request #10069 from Microsoft/bestChoiceType
Use "best choice type" for || and ?: operators
2016-08-01 15:26:57 -07:00
Anders HejlsbergandGitHub 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 CavanaughandGitHub 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 CavanaughandGitHub 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 CavanaughandGitHub 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
AndyandGitHub 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
AndyandGitHub 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 HejlsbergandGitHub 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
AndyandGitHub 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 WighamandGitHub 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 WighamandGitHub 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-SandersandGitHub 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 WighamandGitHub 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łokosiewiczandGitHub 34744802bc Fix typo in comment for MAX_SAFE_INTEGER 2016-07-26 14:58:16 +02:00
Nathan Shively-SandersandGitHub 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 RessinandWesley 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