Commit Graph

1129 Commits

Author SHA1 Message Date
David Ungar
9b2faa03dd Shorten fillInModulesToImportFromImplicitImportModuleNames 2017-09-14 16:53:16 -07:00
David Ungar
add13798be Separated out the Onone module handling from stdlib handling
Also refactored the Onone module predicate. I believe there is no functional change, but I don't understand the correctness of what was there.
2017-09-14 16:53:16 -07:00
David Ungar
249718e1bd Consolidate performWholeModuleTypeChecking and finishTypeCheckingMainModule into typeCheckMainModule 2017-09-14 16:53:16 -07:00
David Ungar
266007bee3 Don't pass clangImporter 2017-09-14 16:53:16 -07:00
David Ungar
8099209ddc Reify generateOutputForTheWholeModule 2017-09-14 16:53:16 -07:00
David Ungar
7fe7191a54 delete redundant "OnMainModule" from performWholeModuleTypeCheckingOnMainModule 2017-09-14 16:53:16 -07:00
David Ungar
2c08429e27 split up typeCheckTopLevelInputsExcludingMain
because the old name and code were just confusing to me

# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-14 16:53:16 -07:00
David Ungar
e3a7857d77 Move comment to function declaration and renamed parseMainAndTypeCheckTopLevelFiles
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-14 16:50:55 -07:00
David Ungar
10b42c26b8 Addressing review suggestions
- Replaced RecursiveSharedTimer w/ SharedTimer in performTypeChecking
- Sorted includes by library name within top-level group
- Removed timer from addAdditionalImportsTo
- Changed comment to doc comment
- Unlinked computation of ImplicitModuleImportKind from creation of SIL module
- Renamed supplyREPLFileWithImports to createREPLFileWIthImports
- Reified tuple of ImplicitImports

# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-14 16:49:39 -07:00
David Ungar
4c96b89b87 Fix a bug with DelayedCB 2017-09-14 16:46:37 -07:00
David Ungar
768586b3a0 Bug fix: loadStdlibAndMaybeSwiftOnoneSupport needs to be able to abort the compilation 2017-09-14 16:46:37 -07:00
David Ungar
50e0db551d Ran my changes through git-clang-format.
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-14 16:44:28 -07:00
David Ungar
210cb3c9c1 Pull out supplyREPLFileWithImports.
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-14 16:40:17 -07:00
David Ungar
39771feaef Pulled out parsePartialModulesAndLibraryFiles. 2017-09-14 16:37:44 -07:00
David Ungar
f63cb71196 Pull out parseMainAndTypeCheckTopLevelFiles. 2017-09-14 16:37:44 -07:00
David Ungar
4cc16f4590 Finish replacing “underlying” with “objCModuleUnderlyingMixedFramework” 2017-09-14 16:37:44 -07:00
David Ungar
bff485856b Replace modImpKind w/ implicitModuleImportKind
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-14 16:37:43 -07:00
David Ungar
91bb47e068 Exploit constancy of FrontendOptions and InputFileKind
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-14 16:33:34 -07:00
David Ungar
2b5bfa65fe Pull out loadStdlibAndMaybeSwiftOnoneSupport. 2017-09-14 16:25:10 -07:00
David Ungar
d673df3473 Pull out importUnderlyingModule. 2017-09-14 16:25:10 -07:00
David Ungar
a27a5d9e28 Simplify interface to fillInModulesToImportFromImplicitImportModuleNames. 2017-09-14 16:25:10 -07:00
David Ungar
706c7a336a Pull out importBridgingHeader. 2017-09-14 16:25:10 -07:00
David Ungar
d77f1b2ede Pull out fillInModulesToImportFromImplicitImportModuleNames. 2017-09-14 16:25:09 -07:00
David Ungar
0dd19555d1 Pull out delayed parsing callback compulation. 2017-09-14 16:25:09 -07:00
David Ungar
85a33669a8 Pull out ensureMainFileComesFirst.
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-14 16:25:09 -07:00
David Ungar
3566ad73f4 Pull out createSILModuleIfNecessary so modImpKind can be clearly constant. 2017-09-14 16:24:01 -07:00
David Ungar
02c084ee83 Pull out parseALibraryFile.
# Conflicts:
#	lib/Frontend/Frontend.cpp
2017-09-14 16:24:01 -07:00
David Ungar
0a95f3f725 Pull out computeTypeCheckingOptions. 2017-09-14 16:22:43 -07:00
David Ungar
36a490597f Pull out parseTheMainFile 2017-09-14 16:22:43 -07:00
David Ungar
28e4f0f333 pull out typeCheckTopLevelInputsExcludingMain 2017-09-14 16:22:43 -07:00
David Ungar
168a4bf0cc Pull out performWholeModuleTypeCheckingOnMainModule 2017-09-14 16:22:43 -07:00
David Ungar
3a7cc73043 pull out finishTypeCheckingMainModule 2017-09-14 16:22:43 -07:00
Robert Widmann
75a83da03e Implement SE-0075: CanImport
This implementation required a compromise between parser
performance and AST structuring.  On the one hand, Parse
must be fast in order to keep things in the IDE zippy, on
the other we must hit the disk to properly resolve 'canImport'
conditions and inject members of the active clause into the AST.
Additionally, a Parse-only pass may not provide platform-specific
information to the compiler invocation and so may mistakenly
activate or de-activate branches in the if-configuration decl.

The compromise is to perform condition evaluation only when
continuing on to semantic analysis.  This keeps the parser quick
and avoids the unpacking that parse does for active conditions
while still retaining the ability to see through to an active
condition when we know we're moving on to semantic analysis anyways.
2017-08-28 18:35:06 -04:00
Huon Wilson
53ebbf0f18 Merge pull request #11305 from huonw/tbd-install-name
Add -tbd-install_name
2017-08-02 14:21:57 -07:00
Huon Wilson
a6e4fdb887 [Frontend] Add -tbd-install_name frontend argument. 2017-08-02 11:33:54 -07:00
Huon Wilson
374826c960 Merge pull request #11219 from huonw/tbd-is-not-a-main-product
[Frontend] Emit tbd as an extra output, not a frontend action.
2017-07-31 18:46:02 -07:00
Huon Wilson
dfa8501e59 [Frontend] Emit tbd as an extra output, not a frontend action.
This means it can be emitted during an -emit-module frontend job, which is the
most common place it will be used, so reusing work like this is important for
performance.

For now, this has to happen as part of a single frontend invocation, i.e. -wmo
or -force-single-frontend-invocation.
2017-07-31 11:05:29 -07:00
John McCall
dda3a3827c [SR-3063] Suppress SIL transforms when merging modules. 2017-07-27 10:21:02 -04:00
Harlan
37f88e7372 Add frontend flag to serialize Syntax tree (#11095)
* Add frontend flag to serialize Syntax tree

* Rename dump-serialized-syntax-tree to emit-syntax
2017-07-21 14:23:50 -07:00
Doug Gregor
f03685b6d0 Introduce a command-line option to limit the # of typo corrections.
Typo correction can be particularly expensive, so introduce a
command-line flag to limit the number of typo corrections we will
perform per type-checker instance. Default this limit to 10.

Addresses rdar://problem/28469270 to some extent.
2017-07-10 11:40:35 -07:00
David Farler
645aaad551 [index/build] Upstream indexing while building changes
This patch upstreams previously AppleInternal changes for
indexing while building.
2017-06-29 16:20:06 -07:00
Mark Lacey
e51e3e4bd4 Update determination of "too complex" expression to take time into account.
By default, end expression type checking after the elapsed process time
is more than 60 seconds for the current expression. This threshold can
be overridden by using -solver-expression-time-threshold=<seconds>.

Resolves rdar://problem/32859654
2017-06-21 16:26:34 -07:00
Roman Levenstein
2a10d8692b Clean-up the code that stored and passes the SILSerializeAll flag around.
- SILSerializeAll flag is now stored in the SILOptions and passed around as part of it
- Explicit SILSerializeAll/wholeModuleSerialized/makeModuleFragile API parameters are removed in many places
2017-06-16 17:50:33 -07:00
Mark Lacey
d26c859222 Add -warn-long-expression-type-checking=<limit> frontend option.
Generates a warning for any expression that takes longer than <limit>
milliseconds to type check. This compliments the existing
-warn-long-function-body=<limit> option.
2017-06-12 17:27:29 -07:00
Huon Wilson
40ba18615b [Frontend] -validate-tbd-against-ir has 3 levels of validation.
It can now:

- not validate (=none)
- validate that all symbols in the IR are also in the TBD (=missing),
- validate the above, and also that all in the TBD are in the IR (=all).

The first and last were switched between with the old boolean flag, the
second is new.
2017-05-19 18:36:48 -07:00
Argyrios Kyrtzidis
0bb299abc8 [frontend] Add 'finishProcessing()' method for DiagnosticConsumers to do their finalization (e.g. writing to a file)
Use this to avoid creating an empty serialized diagnostics file when the compiler crashes.
2017-05-05 18:25:02 -07:00
Argyrios Kyrtzidis
b1fe90cc46 [frontend] Don't destroy the compiler instance object inside performCompile()
This permits continuing to use the diagnostic engine object from the instance.
2017-05-03 16:27:50 -07:00
David Farler
63776b507b When converting some of the old Migrator automation to the new Migrator,
I had set up the driver to invoke a separate frontend invocation with
the "update code" mode. We sort of did this last release, except we
forked to the swift-update binary instead. This is causing problems with
testing in Xcode.

Instead, let's perform a single compile and add the remap file as an
additional output during normal compiles. The driver, seeing
-update-code, will add -emit-remap-file-path $PATH to the -c frontend
invocation.

rdar://problem/31857580
2017-04-27 01:03:00 -07:00
Huon Wilson
87aa3e6935 [Frontend] -frontend -emit-loaded-module-trace.
The -frontend jobs can output a JSON file summarizing the
swiftmodules (etc.) they load during compilation.
2017-04-21 11:14:29 -07:00
David Farler
303a3e5824 Start the Migrator library
The Swift 4 Migrator is invoked through either the driver and frontend
with the -update-code flag.

The basic pipeline in the frontend is:

- Perform some list of syntactic fixes (there are currently none).
- Perform N rounds of sema fix-its on the primary input file, currently
  set to 7 based on prior migrator seasons.  Right now, this is just set
  to take any fix-it suggested by the compiler.
- Emit a replacement map file, a JSON file describing replacements to a
  file that Xcode knows how to understand.

Currently, the Migrator maintains a history of migration states along
the way for debugging purposes.

- Add -emit-remap frontend option
  This will indicate the EmitRemap frontend action.
- Don't fork to a separte swift-update binary.
  This is going to be a mode of the compiler, invoked by the same flags.
- Add -disable-migrator-fixits option
  Useful for debugging, this skips the phase in the Migrator that
  automatically applies fix-its suggested by the compiler.
- Add -emit-migrated-file-path option
  This is used for testing/debugging scenarios. This takes the final
  migration state's output text and writes it to the file specified
  by this option.
- Add -dump-migration-states-dir

  This dumps all of the migration states encountered during a migration
  run for a file to the given directory. For example, the compiler
  fix-it migration pass dumps the input file, the output file, and the
  remap file between the two.

  State output has the following naming convention:
  ${Index}-${MigrationPassName}-${What}.${extension}, such as:
  1-FixitMigrationState-Input.swift

rdar://problem/30926261
2017-04-17 16:25:02 -07:00