-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Checkjs implies allowjs #40275
Checkjs implies allowjs #40275
Conversation
Even if you have `"allowJs": false`. This is not a useful combination. Changing this makes the compiler more friendly and easier to describe.
@DanielRosenwasser @RyanCavanaugh @orta Do you think the new behaviour is reasonable? @sheetalkamat @weswigham Is |
For other defaulted flags dependent on other flags, we have something like a |
I thought that might be the case. I switched to an accessor function |
@@ -3160,7 +3160,7 @@ namespace ts { | |||
createDiagnosticForOptionName(Diagnostics.Option_0_cannot_be_specified_when_option_target_is_ES3, "useDefineForClassFields"); | |||
} | |||
|
|||
if (options.checkJs && !options.allowJs) { | |||
if (options.checkJs && !getAllowJSCompilerOption(options)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems incorrect condition. You want to check if options.allowJs === false here instead
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Duh, thanks for the catch.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, wait, that undoes the loosening from this PR. THe current code only errors when checkJs: true
but allowJs: false
explicitly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if (options.checkJs && !getAllowJSCompilerOption(options)) { | |
if (options.checkJs && options.allowJs === false) { |
will also work and won’t require a function call.
I'm not so sure how I feel about this. But I can't think of any reason why it's bad. |
Chatted with @RyanCavanaugh, he couldn't either. He also pointed out that maybe allowJs should default to true now. I'll investigate that next. |
If it's not explicitly provided.
Note that it's still an error to explicitly provide
checkJs: true, allowJs: false
.This change makes the compiler options easier to use and to describe.