Commit Graph
12541 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 Wigham 269b828538 Fix lssl task (#9967) 2016-08-05 14:16:29 -07:00
Wesley Wigham 02a79e3f81 Try using runtests-parallel for CI (#9970)
* Try using runtests-parallel for CI

* Put worker count setting into .travis.yml

* Reduce worker count to 4 - 8 wasnt much different from 4-6 but had contention issues causing timeouts
2016-08-05 13:50:21 -07:00
Yui 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 b54aec1c12 Merge pull request #10153 from Microsoft/tsx_toString
Don't allow properties inherited from Object to be automatically included in TSX attributes
2016-08-05 05:57:24 -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 18fb33d36f Remove unused reference files: these tests produce erros so they will not produce these files (#9233) 2016-08-04 08:11:42 -07:00
Yui 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 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 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 917d18a1ca Accept new baselines 2016-08-03 10:05:49 -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 0eeb9cbd0c Fix #10083 - allowSyntheticDefaultImports alters getExternalModuleMember (#10096) 2016-08-02 12:34:23 -07:00
Nathan Shively-Sanders 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 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 6caa2611cb Merge pull request #10054 from SaschaNaz/jsxopening
Format JSX opening element
2016-08-01 15:50:43 -07:00
Ryan Cavanaugh 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 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 36b611334d Merge pull request #10028 from Microsoft/fixDiscriminantInLoop
Fix discriminant in loop
2016-08-01 11:09:51 -07:00
Andy 4f27f65c9e Merge pull request #10068 from Microsoft/lshost_realpath
Provide `realpath` for module resolvution in LSHost
2016-08-01 10:26:31 -07:00
Anders Hejlsberg c7d2e5975b Accept new baselines 2016-08-01 09:50:17 -07:00
Anders Hejlsberg aa8c6c8f63 Add test baselines 2016-08-01 09:50:08 -07:00
Anders Hejlsberg 47f6bb2e26 Add test 2016-08-01 09:49:27 -07:00
Andy Hanson cb1ea7be5d Provide realpath for module resolution in LSHost 2016-08-01 09:47:52 -07:00
Anders Hejlsberg 0a90a4b27c Accept new baselines 2016-08-01 07:04:54 -07:00
Anders Hejlsberg b3b4c34b60 Add additional tests 2016-08-01 07:04:43 -07:00
Anders Hejlsberg ade89a6032 Fix issue related to this and #8383 2016-08-01 06:41:05 -07:00
Andy 6c6de2a3e2 Merge pull request #9990 from Microsoft/lint_tests
Lint tests helper files
2016-08-01 06:05:03 -07:00
Ryan Cavanaugh 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 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
Wesley Wigham 394dbbf280 Merge branch 'travis-cache' 2016-07-29 14:48:43 -07:00
Wesley Wigham 2c156ed8f3 Have travis use a newer image for the OSX build (#10034)
Suggested by travis support for stopping the randomly-halting-builds issue.
2016-07-29 14:43:11 -07:00
zhengbli 0f1585f0af recreate program if baseUrl or paths changed in tsconfig 2016-07-29 11:02:33 -07:00
Ryan Cavanaugh 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 Hanson a485aab055 Lint tests helper files 2016-07-29 08:27:01 -07:00
Andy 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 d9b67231e1 Add regression test 2016-07-29 07:54:40 -07:00
Anders Hejlsberg 3e3b80826f Properly reset type guards in loops 2016-07-29 07:54:19 -07:00
Andy 878cf85438 Merge pull request #9985 from Microsoft/fix_runtests_browser
Always use a hardcoded port
2016-07-29 05:54:35 -07:00
Andy 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
Andy Hanson 20ffb5fc2a Remove [port] in usage message 2016-07-28 13:44:40 -07:00
Andy Hanson d5beef9261 Get rid of port parameter 2016-07-28 13:40:05 -07:00
Anders Hejlsberg 0c131fab68 Merge pull request #9407 from Microsoft/literalTypes
Number, enum, and boolean literal types
2016-07-28 12:09:49 -07:00