Commit Graph

12488 Commits

Author SHA1 Message Date
Ryan Cavanaugh
8038e14a61 Update patch version to .2 2018-10-09 10:39:39 -07:00
Nathan Shively-Sanders
1d773a1e09 Fix class/constructor-function merge (#27366)
The check for prototype assignment on constructor functions assumes
that the prototype property, if present, comes from an assignment
declaration, such as:

```js
SomeClass.prototype = { /* methods go here */ }
```

In this case, however, when class SomeClass and var SomeClass merge
(because this is allowed), prototype is the synthetic property from
class SomeClass, which has no valueDeclaration.

The fix is to check that prototype has a valueDeclaration before
checking whether the valueDeclaration is in fact a prototype-assignment
declaration.
2018-10-08 12:56:03 -07:00
Nathan Shively-Sanders
1cfab760e1 Only functions can be constructor functions (#27369)
`@constructor` put on anything incorrectly makes it a JS constructor. This
is a problem for actual constructors, because getJSClassType doesn't
work on actual classes. The fix is to make isJSConstructor require that
its declaration is a function.
2018-10-08 10:01:04 -07:00
Nathan Shively-Sanders
95dc1f2574 Fix name resolution of exports in JS (#27394)
The ad-hoc name resolution rule for `exports` forgets to check the
requested meaning. When `getTypeReferenceType` calls`
resolveTypeReferenceName` with `Type` only in order to give an error
when the program uses a value like a type, it is incorrectly able to
resolve `exports` instead of producing an error. Then this incorrect
symbol gets treated like an alias, which it isn't, causing the assert.

The fix, for now, is to make resolution of `exports` check the requested
meaning so that it only resolves when `Value` is requested. This makes
the above code an error ("Cannot use the namespace 'exports' as a
type."), but I think this is fine for a bug fix. We can decide later if
`exports` should behave like other expandos and be a legal type
reference.

Note that the name actually does resolve correctly, so JS users will get
the desired completions. They'll just have an error to suppress if they
have checkJs on.
2018-10-08 08:53:21 -07:00
Nathan Shively-Sanders
36e212bca3 Report circular JSDoc type references (#27404)
JSDoc types references can often be to values, which can often be
circular in ways that types tied to declarations cannot. I decided to
create a separate property on SymbolLinks rather than reusing
declaredType, although I'm not sure that's strictly required.
2018-10-05 15:41:09 -07:00
Nathan Shively-Sanders
f23845aa9b Fix parent points in unreachable code (#27400)
In the binder, unreachable code mistakenly skips the `bindJSDoc` call in
`bindChildrenWorker`, which sets parent pointers. The fix is to call
`bindJSDoc` in the case of unreachable code as well.
2018-09-27 16:11:46 -07:00
Nathan Shively-Sanders
b77cb2ac45 Fix commonjs export= merging (#27368)
I'm surprised we haven't seen more of this; I suspect it's because the
mixed `module.exports=` + `export.foo=` pattern isn't that common.
However, it'll happen any time that the exported symbol is unknown;
getCommonJsExportEquals blithely clones unknownSymbol and proceeds to
stick the `exports.foo=` properties onto it.

This causes problems later, because the compiler checks for
unknownSymbol with `===`. The fix is to not stick properties onto a
clone of unknownSymbol. This makes the correct errors appear and removes
the crash.
2018-09-26 10:54:26 -07:00
Nathan Shively-Sanders
53105b3aff Fix crash in use-before-def checking of enum tag (#27350) 2018-09-25 16:06:23 -07:00
Daniel Rosenwasser
005d202251 Bump version to 3.1.1 2018-09-25 13:54:24 -04:00
Ryan Cavanaugh
04374250cc 3.1 LKG update 2018-09-24 15:14:09 -07:00
Wesley Wigham
fc1abbbabe Fix non-selfclosing JSX tag contextual types (#27251) (#27314) 2018-09-24 13:51:07 -07:00
Wesley Wigham
dd9d5d1398 Limit the narrow-to-fresh rule added with boolean literals to only boolean literals (#27274) (#27319)
* Remove the narrow-to-fresh rule added with boolean literals

* Revert "Remove the narrow-to-fresh rule added with boolean literals"

This reverts commit 9f96fe5da3.

* Only apply freshness to booleans for now

* Add largeish example from issue

* Should be AND not OR

* Add minor improvements suggested by @ahejelsberg

* Reorder conditional a bit
2018-09-24 13:51:00 -07:00
Ryan Cavanaugh
d715d835c6 Merge pull request #27254 from weswigham/port-distribution-fix
Distribute indexes of indexed access types first (#27243)
2018-09-21 13:25:40 -07:00
Wesley Wigham
317b2c2a74 Distribute indexes of indexed access types first (#27243) 2018-09-20 17:13:35 -07:00
Wesley Wigham
93f6b73c8c Set parent pointers on manufactured reference for property initialization check (#27246) 2018-09-20 16:54:46 -07:00
Nathan Shively-Sanders
90d3f8b573 Only report expando use-before-def for identical control flow containers (#27199) 2018-09-18 15:28:16 -07:00
Sheetal Nandi
3c6c32bdfc Merge branch 'master' into projectReferenceInputDetection 2018-09-18 14:34:24 -07:00
Sheetal Nandi
865b3e7862 Merge pull request #27172 from Microsoft/moduleResolutionWithOutDir
Use originalFileName (fileName of input project reference file) to resolve module/typereferences/reference paths in it instead of output decl file path
2018-09-18 14:33:33 -07:00
Sheetal Nandi
4c047254e6 Ensure all the usages of compilerOptions.declaration take into account compilerOptions.composite if needed. 2018-09-18 13:53:16 -07:00
Andy
c57ff087d6 Add codefix to generate types for untyped module (#26588) 2018-09-18 11:47:29 -07:00
Sheetal Nandi
0d5aeeef22 Detect the input file of referenced project with fileNames from parsed command
Fixes #25864 and #26054
2018-09-18 11:44:16 -07:00
Sheetal Nandi
7852cf7ed3 Merge pull request #27175 from a-tarasyuk/bug/error-using-declaration-dir-with-composite
#26862: allow using declarationDir with composite option
2018-09-18 10:53:38 -07:00
Sheetal Nandi
4009d1654b Merge pull request #27176 from a-tarasyuk/bug/26786-no-error-when-using-allowjs-with-composite
#26786: deny using allowJs option with composite
2018-09-18 10:53:10 -07:00
Anders Hejlsberg
c0eb742cf3 Merge branch 'master' into fixEmptyObjectFalsiness 2018-09-18 06:28:27 -07:00
Alexander T
5b5af23b41 use getEmitDeclarations helper 2018-09-18 14:46:42 +03:00
Alexander T
d11117829d allow using declarationDir with composite option 2018-09-18 14:38:48 +03:00
Alexander T
c510df1a53 deny using allowJs option with composite 2018-09-18 12:41:30 +03:00
Sheetal Nandi
d51b8d940c Use originalFileName (fileName of input project reference file) to resolve module/typereferences/reference paths in it instead of output decl file path
This also ensures that originalFileName, resolvedPath are set correctly even when we are reusing program structure
Fixes #26036
2018-09-17 19:00:30 -07:00
Sheetal Nandi
b6d90841c9 Add traceResolution option to build options 2018-09-17 18:48:57 -07:00
Wesley Wigham
e7cf9994ce Implement readDirectory on the watch mode CompilerHost 2018-09-17 18:02:59 -07:00
Wesley Wigham
f6321bf6d5 Elaborate into arrow return expressions and array types (#27040)
* Dive into simple arrow functions when elaborating errors

* Dive into array literals as though they were tuples when elaborating, if possible

* Make parameter required

* Remove misleading errors by deeply tuplefying

* Remove lib related spans
2018-09-17 16:45:54 -07:00
Ryan Cavanaugh
577ee49106 Merge pull request #27139 from ajafff/config-extends
fix getExtendedConfig in commandLineParser
2018-09-17 16:29:16 -07:00
Ryan Cavanaugh
ba76a8412f Merge pull request #26935 from ajafff/abstract-baseclass-property
Error accessing abstract property in constructor of abstract subclass
2018-09-17 16:23:34 -07:00
Ryan Cavanaugh
8ca01dfc9f Merge pull request #26851 from ajafff/assert-compilerhost-readdirectory
Assert CompilerHost.readDiretory for projectReferences with include
2018-09-17 16:13:08 -07:00
Nathan Shively-Sanders
59e4770a51 Fix enum tag circular references (#27161)
* Fix enum tag circular references

Also, don't try to resolve enum tag types in Typescript.

* Improve comment
2018-09-17 16:06:17 -07:00
Sheetal Nandi
e3026b0eb3 Merge pull request #27155 from Microsoft/fixIncrementalWatchProjectWithReferences
Fix incremental watch when project built has project references
2018-09-17 15:34:40 -07:00
Andy
cfd0a62357 When renaming module, ensure rename span is just the last component of the path (#27151) 2018-09-17 15:26:41 -07:00
Wesley Wigham
a55c0b7df9 Allow drawing inferences to conditional type branches (#27012)
* Allow drawing inferences to conditional type branches

* Fix lint
2018-09-17 15:19:23 -07:00
Wesley Wigham
c3b4f72498 Improve indexed access inferences (#27015) 2018-09-17 15:19:11 -07:00
Andy
bc709a87ad Fix bug where array element is undefined (#26433)
* Fix bug where array element is undefined

* Better fix
2018-09-17 15:14:09 -07:00
Ryan Cavanaugh
a5326e68d0 Merge pull request #26866 from NMinhNguyen/allowSyntheticDefaultImports-if-esModuleInterop
Enable allowSyntheticDefaultImports if esModuleInterop is enabled
2018-09-17 15:03:28 -07:00
Nathan Shively-Sanders
c9f190283e Fix non-toplevel prototype assignment (#27096)
* Fix non-toplevel prototype assignment

binder was using the wrong node to lookup the containing class type for
prototype assignment, so it incorrectly put the prototype declaration on
the class' symbol.

This correction to the binder in turn required a change in
getJSClassType in the checker. It now has to look at the "prototype"
property for the prototype instead of looking on the class symbol's exports
(which makes no sense).

* Refactor per PR suggestion
2018-09-17 13:07:05 -07:00
Nathan Shively-Sanders
989a717b04 Definite assignment checking for expando properties (#27128) 2018-09-17 12:56:39 -07:00
Sheetal Nandi
a5fd3e9176 Handle out and outFile options correctly in tsbuild 2018-09-17 12:46:10 -07:00
Klaus Meinhardt
f71030f011 Simply override extendedSourceFiles array 2018-09-17 21:24:26 +02:00
Sheetal Nandi
b6129b452f Fix the project reference verification to include json source file version check 2018-09-17 12:18:59 -07:00
Sheetal Nandi
aac961e60d Builder to use project reference redirects to output in the dependencies instead of source files 2018-09-17 12:18:59 -07:00
Andy
e710645bf9 Never escape string literals from textChanges (#26971)
* Never escape string literals from textChanges

* Use `boolean | undefined`
2018-09-17 11:06:39 -07:00
Andy
a57467a317 Fix bugs: Replace SourceFile if '--noUnusedLabels' changed (#27060)
* Fix bugs: Replace SourceFile if '--noUnusedLabels' changed

* Use properties on CommandLineOptionBase

* Handle "alwaysStrict" and better categorize options

* Properly handle "strict"

* Code review

* fix test
2018-09-17 10:53:48 -07:00
Anders Hejlsberg
acb8b1f65f Correct falsiness for {} empty object type 2018-09-17 09:06:26 -07:00