Commit Graph

426 Commits

Author SHA1 Message Date
elsh
e130fde807 Fix test for linux 2021-10-08 16:23:43 -07:00
Alexis Laferrière
baf032bda2 Merge pull request #39619 from xymus/pls-no-script-bug-reports
[Frontend] Don't ask to report bugs for a script failure
2021-10-08 09:11:27 -07:00
elsh
782ba98d1b [Module aliasing] Mangle symbols with module real names 2021-10-06 18:20:26 -07:00
elsh
e182c2387e Update tests due to windows escape char error 2021-10-06 15:28:16 -07:00
elsh
f4f08072d8 Add tests with more chained deps scenarios 2021-10-06 14:39:11 -07:00
Alexis Laferrière
69ce3ec41f [Frontend] Don't ask to report bugs to us in immediate mode
rdar://81233463
2021-10-06 14:13:58 -07:00
elsh
307c08c0fa Add tests with chained dependency scenarios with module aliasing 2021-10-06 13:52:28 -07:00
elsh
0cad63eb12 Clean up a test 2021-10-06 12:37:23 -07:00
elsh
7f9dbefd2f Update test 2021-10-05 18:19:12 -07:00
elsh
2efab715cd Use real module names to load modules
Add ModuleInterface option meta tag for -module-alias
Add tests loading modules with -module-alias for swiftmodule and swiftinterface
with various loaders incl. serialized, explicit, and source loader.
2021-10-05 13:41:48 -07:00
elsh
55b9fa11d8 Load modules using real names if module aliases are used
rdar://83591943
2021-10-05 10:55:22 -07:00
elsh
955f1a2508 fix diag msg 2021-09-24 14:37:56 -07:00
elsh
58a01c4ee7 Use StringMap
More specific diag msgs
Add tests
2021-09-24 14:37:56 -07:00
Argyrios Kyrtzidis
a382f589a5 Merge pull request #39141 from akyrtzi/opt-record-via-supplemental-outputs
[frontend] Support passing the optimization record file via the supplemental outputs map
2021-09-07 13:44:05 -07:00
Argyrios Kyrtzidis
d3ba531e64 [frontend] Support passing the optimization record file via the supplemental outputs map
The Swift driver is passing the optimization record file path via the supplementals output, instead of the flag, on certain circumstances.
Enhance the frontend to check supplemental outputs otherwise the record file will not get emitted when using the new swift driver.
2021-09-02 11:13:34 -07:00
Hamish Knight
01a082a058 [AST] Adopt ArgumentList
Switch out the representation of argument lists
in various AST nodes with ArgumentList.
2021-09-01 18:40:23 +01:00
Ben Barham
12018bebb9 [Frontend] Always output the version being compiled for
Outputting the effective version in the pretty stack trace was skipped
if the current version was the same as the effective version. This would
result in an empty line, which is somewhat confusing. Output a line
regardless.

Resolves rdar://81140703
2021-07-27 11:32:31 +10:00
Owen Voorhees
bcbaacd710 Merge pull request #38245 from owenv/emit-frontend-tool-flags 2021-07-03 10:22:31 -07:00
Owen Voorhees
63b03fc858 Print flags of all frontend-integrated tools when -emit-supported-features is passed 2021-07-02 18:18:43 -07:00
Min-Yih Hsu
d00a6cc0e3 [SIL][Frontend] Simplify debug info generation flow for SIL files
- If any of the `-g<kind>` flag is given -- except `-gnone`, debug
   info will be printed into every generated SIL files.
 - The `-gsil` is deprecated in favor of `-sil-based-debuginfo`. The
   SILDebugInfoGenerator Pass now generates intermediate SIL file with
   name "<output file>.sil_dbg_<n>.sil". Other functionalities of that
   Pass remain the same.
2021-06-30 17:21:58 -07:00
Anthony Latsis
6d7c4e5fdf Merge pull request #35849 from AnthonyLatsis/fix-debug-cycles 2021-06-25 05:32:09 +03:00
Ben Barham
599ba8bdbd Add all deserialization fatal output to the pretty stack trace
Rather than outputting diagnostics and to stderr, output all the extra
information added when deserialization fatally fails to the pretty stack
trace instead. Since the pretty stack trace is added to crash logs, this
should avoid the dance of requesting the compiler output

  - Moves the previous "**** DESERIALIZATION FAILURE ..." output to the
    last pretty stack trace line

  - Removes the module and compiler version notes added to the fatal
    diagnostic

  - Adds a new effective compiler version line for all frontend failure.
    Somewhat duplicates the line from the driver, but adds in the
    effective version

  - Adds a new line for the full misc version of the module that failed.
    May double up with previous "While reading from ..." lines that are
    added in various deserialization methods, but better to have it
    twice than not at all
2021-06-04 08:32:07 +10:00
Ben Barham
cbbc29ba62 [Serialization] Add whether allowing errors to the pretty stack output
It's currently not obvious in crash reports whether compiling with
errors is enabled or not. Since this option can make previously
"impossible" paths now possible, add a message to both the pretty stack
output and fatal deserialization diagnostics to point out that it is
enabled.
2021-05-25 09:25:52 +10:00
Alex Hoppen
285cea4670 Merge pull request #37512 from ahoppen/pr/allow-driver-errors
[SourceKit] Recover if compiler arguments have errors
2021-05-21 09:17:01 +02:00
Ben Barham
747be5899b [Frontend] Do not output swiftinterface when there has been errors
When allowing errors with
-experimental-allow-module-with-compiler-errors, do not output the
.swiftinterface when there has been errors. There's no real need to
output them for invalid modules, so this avoids module interface
printing having to have checks for normally-impossible cases.

Resolves rdar://78039608.
2021-05-20 11:48:05 +10:00
Alex Hoppen
e8c6ac0d72 [Frontend] Add test that we can create a module if same filename is used twice and -experimental-allow-module-with-compiler-errors is passed 2021-05-19 22:25:49 +02:00
Ben Barham
c1e4362dfd [Serialization] Do not assert when inherited type is null
When compiling with allow errors, it's possible to have invalid
inherited types - both null and ErrorType.

Cleaned up the tests a little - moved the majority of
Frontend/allow-errors.swift into separate files in
Serialization/AllowErrors and use split_file.py instead of #defines.

Resolves rdar://78048470
2021-05-15 16:35:23 +10:00
Ben Barham
4ec4520e0b Merge pull request #36968 from bnbarham/swift-serialization-crash
[Serialization] Add some checks for invalid types
2021-04-21 09:08:28 +10:00
Luciano Almeida
ddeb1929c4 [DiagnosticQol][SR-14505] Use DeclDescriptive kind in missing return data flow diagnostics (#36952)
* [Diagnostics] Use DeclDescriptiveKind on data flow diagnostics to improve diagnostic message

* [tests] Add regression tests to SILOptimizer/return.swift

* [tests] Adapt other tests to changes of SR-14505

* [Diagnostics] Adapt message for missing return diagnostics, remove article

* [Diagnostics] Adapt message for missing return diagnostics to have a note with fix

* [tests] Adjust tests in validation suit
2021-04-20 08:16:32 -03:00
Ben Barham
f876e0cd1a [Serialization] Add some checks for invalid types
When allowing errors there's various cases where an invalid type is used
during serialization:
  - Invalid explicit conformances on an extension
  - Superclass with invalid generic type

Add checks to skip these to avoid crashing.

Resolves rdar://75379780.
2021-04-20 13:39:46 +10:00
Varun Gandhi
cc14992281 [Frontend] Add -emit-irgen option to driver and frontend.
Fixes SR-14389, fixes rdar://75715690.
2021-03-31 11:56:36 -07:00
Ben Barham
a17593f026 [Frontend] Always output swiftdeps when allowing errors
A module is always output when allowing errors, make sure to output its
dependencies as well.
2021-03-25 16:19:09 +10:00
Ben Barham
ce70727e6f [Deserialization] Output a diagnostic for invalid decls or types
47b068d445 output a diagnostic if a
deserialized decl was invalid (checking `Decl::isInvalid`). It had two
major issues:
  1. It incorrectly output diagnostics for valid modules
  2. It did not catch call invalid declarations

(1) is caused by `isInvalid` falling back to checking the storage for
accessors when the interface type hasn't already been computed (a
fallback to prevent a cycle due to `SimpleDidSetRequest` typechecking
the body). Since the `VarDecl` hasn't finished deserializing, it returns
`true` for its `isInvalid` check (even though it would later return
`false`).

For (2), only `ValueDecl`s would ever be invalid, since other
declarations use a bit in `Decl` to check for validity. As that's not
serialized, those would always be valid in deserialization.

To avoid both these issues, instead output a flag for each declaration
representing whether it is invalid (or not). Read that during
deserialization and output a diagnostic if it is invalid. To be extra
sure that a diagnostic is always output on an error, also output one
when deserializing any `ErrorType`. This ensures that SILGen does not
run when allowing errors (and an error is present), as it is likely to
crash when presented with an invalid AST.

Resolves rdar://74541834
2021-03-03 12:12:20 +10:00
Ben Barham
bb9dd3a4aa [Frontend] Allow missing files when allowing compiler errors
As with other compilation errors, we want to generate the swiftmodule
regardless.
2021-02-24 14:13:21 +10:00
Ben Barham
47b068d445 [Serialization] Emit an error on deserializing an invalid declaration
When running in the allow errors mode
(-experimental-allow-module-with-compiler-errors), modules may contain
invalid declarations. The rest of the compiler pipeline, however,
expects to have valid declarations unless diagnostics have emitted an
error. Emit an error while deserializing to maintain this assumption.

Note that these errors will not have a useful location, unless there's a
corresponding `.swiftsourceinfo`. This isn't a problem for the intended
use case in IDEs, where diagnostics outside the current file would be
ignored anyway.

Since reading declarations is lazy, SILGen (and thus SIL diagnostics)
can still run as long as any invalid declarations weren't referenced in
the compiling module.

Resolves rdar://74325388
2021-02-18 11:28:22 +10:00
Anthony Latsis
978db47337 Evaluator: Improve -debug-cycles output 2021-02-09 17:01:24 +03:00
Alex Hoppen
5e1ba8b16e [libSyntax] Store raw trivia inside RawSyntax and only lex into pieces when requested 2021-02-05 08:15:54 +01:00
Hamish Knight
f201999bfb [ASTDumper] Don't call isFinal()
Avoid triggering the semantic `IsFinalRequest`
and instead check for the presence of the final
attribute.

Resolves SR-13230.
2020-12-20 15:22:47 +00:00
Artem Chikin
47da04fd72 Merge pull request #34417 from artemcm/FrontendParseableOutput
Add support for parseable-output straight from the frontend
2020-12-16 12:59:40 -08:00
Artem Chikin
915186ab47 Refactor Basic/Parseable-Output to remove dependency on Driver & Frontend
Introducing new entry-points that can be used from both Driver and Frontend clients, using an intermediary new type: `DetailedMessagePayload`, when needed.
2020-12-14 11:35:56 -08:00
Xi Ge
1b1fae56cc Frontend: allow specifying only one module trace output path in batch mode
We only need one primary file to emit the module trace file.

rdar://72261567
2020-12-12 15:46:13 -08:00
Artem Chikin
222b153897 Remove unnecessary XFAILs 2020-12-11 16:01:04 -08:00
Artem Chikin
21c4e3a29d Remove unnecessary platform-specific checks from tests 2020-12-11 16:01:04 -08:00
Artem Chikin
e5d86d4b23 Match diagnostic output formatting from the PrintDiagnosticConsumer 2020-12-11 16:01:04 -08:00
Artem Chikin
bc58ed42d9 Add frontend parseable output tests 2020-12-11 16:01:04 -08:00
Rintaro Ishizaki
bf5d22257a [Frontend] Opt-in missing file recovery 2020-12-04 15:23:43 -08:00
Rintaro Ishizaki
055dc66d3b [Frontend] Recover missing input file by dummy input buffer.
Also, continue trying opening files even if any of primary files are
missing so that the caller can know all files failed to open.

rdar://problem/33757793
2020-12-04 15:23:29 -08:00
Ben Barham
79b7d5fa99 [Frontend] Disable skipping any function bodies for SwiftOnoneSupport 2020-11-16 15:09:53 +10:00
Alexis Laferrière
b72b0c30fa Merge pull request #34612 from xymus/dont-skip-nested-types
[Sema] Add flag to optimize building swiftmodule files preserving type info for LLDB
2020-11-12 19:16:21 -08:00
Alexis Laferrière
02c134372f [Sema] Add option to skip non-inlinable functions without types
This frontend flag can be used as an alternative to
-experimental-skip-non-inlinable-function-bodies that doesn’t skip
functions defining nested types. We want to keep these types as they are
used by LLDB. Other functions ares safe to skip parsing and
type-checking.

rdar://71130519
2020-11-12 14:28:09 -08:00