Commit Graph

585 Commits

Author SHA1 Message Date
Hamish Knight
6c930f7aaa [Coverage] Also walk MacroExpansionDecls
Make sure we walk macro expansion decls to handle
cases where e.g a binding introduces control flow.
This should be a pretty uncommon case since bindings
introduced by macros aren't actually usable when
expanded in local contexts, but handle it all the
same.
2024-06-03 12:14:56 +01:00
Hamish Knight
95cbced7a0 [Coverage] Avoid profiling functions with body macros
These replace the body of the function, and as such
shouldn't be profiled.
2024-06-03 12:14:56 +01:00
Hamish Knight
98f0200f64 [Coverage] Avoid recording regions from macro expansions
Ignore any regions recorded while inside a macro
expansion, but account for any control flow that
may have happened such that the exit count is
correctly adjusted. This allows e.g throwing function
calls to behave correctly within the expansion.

rdar://129081384
2024-06-03 12:14:56 +01:00
Holly Borla
1ffc6b7dbe Merge pull request #73878 from hborla/invalid-accessor-macro
[Macros] Don't allow macros to add accessors to `let` variables.
2024-05-24 08:08:48 -07:00
Holly Borla
3c6918a2c4 [Macros] Don't allow macros to add accessors to let variables. 2024-05-23 22:22:07 -07:00
Doug Gregor
2388acdfd3 [SE-0415] Enable function body macros by default
Preamble macros are *not* part of the revised SE-0415, so leave them
experimental.

Tracked by rdar://119687390.
2024-05-20 22:08:33 -07:00
Rintaro Ishizaki
a184ca08b4 Merge pull request #73716 from rintaro/macros-attachedmacro-decllocation
[Macros] Fix source location for declaration syntax of attached macros
2024-05-17 15:40:57 -07:00
Rintaro Ishizaki
921555ab38 [Macros] Fix source location for declaration syntax of attached macros
Use the correct source file.
Previously, the location of declaration macros were sent to executable
plugins as if the were in the source file of the attribute. This was
problematic when the attribute is synsthesized by a macro. When source
location were used in the plugin, for example, as a diagnostic location,
it ended up with an unknown location.
2024-05-17 11:23:49 -07:00
Rintaro Ishizaki
be419a3428 [Macros] Use 'LibraryPluginProvider' in swift-plugin-server
Move 'PluginProvider' logic to 'SwiftLibraryPluginProvider' module
so the compiler can reuse that logic for the actual in-process plugins.
2024-05-07 09:47:04 -07:00
Rintaro Ishizaki
9a38072856 Revert "[Macros] Use 'LibraryPluginProvider' in swift-plugin-server" 2024-05-06 15:57:32 -07:00
Rintaro Ishizaki
26dbe2f8a1 [Macros] Use 'LibraryPluginProvider' in swift-plugin-server
Move 'PluginProvider' logic to 'SwiftLibraryPluginProvider' module
so the compiler can reuse that logic for the actual in-process plugins.
2024-05-01 16:41:14 -07:00
Rintaro Ishizaki
f5aca556dd [Macros] Don't use 'ExportedSourceFile' for macro definition checking
`macro` declarations often appear in files that does not contain any
expansions (e.g. `.swiftinterface`). So invoking `SwiftParser` for the
entire file is a waste.
2024-04-24 22:05:15 -07:00
Dave Lee
e57f70bd4d [Debugging] Add DebugDescriptionMacro experimental feature (#73107)
This removes the leading underscore from the macro.
2024-04-18 17:25:44 -07:00
Rintaro Ishizaki
8a8c96bd66 [Tests] Update for "swift" diagnostic style change
SwiftDiagnostics now emits ASCII characters instead of Unicode line
characters.
2024-04-01 17:09:23 -07:00
Kavon Farvardin
9ae263c728 Test: disable lazy_parsing.swift
It's not currently clear whether this is a regression or just a test
that needs updating. Investigation is needed.
2024-03-14 23:10:44 -07:00
cui fliter
127077b3aa chore: fix some comments
Signed-off-by: cui fliter <imcusg@gmail.com>
2024-03-05 17:23:22 +08:00
Doug Gregor
6c798a2a3e Merge pull request #72027 from DougGregor/top-level-closure-discriminators-in-macros
Ensure that we assign discriminators for closures from top-level macros
2024-03-02 00:02:41 -08:00
Doug Gregor
2e7e33d196 Ensure that we assign discriminators for closures from top-level macros
In top-level code, we were incorrectly pulling closure discriminators
from TopLevelCodeDecls, not from the enclosing source file, which could
lead to the same discriminators being assigned to different closures that
come from macro expansions at the top level. Hilarity ensures, yet I am
not amused.

Adjust the DeclContext appropriately when computing discriminators.

Fixes rdar://123836908.
2024-03-01 17:15:03 -08:00
Apollo Zhu
fe1af16eff Add missing codesign to SE-0422 tests 2024-02-29 16:27:42 -08:00
Adrian Prantl
1e50be370d Emit original-source-range comment in inline macro expansion files.
rdar://123117522
2024-02-27 15:30:24 -08:00
Doug Gregor
0c9c734f7e Merge pull request #71722 from DougGregor/diagnostic-style-swift-default 2024-02-24 14:42:38 -10:00
Mishal Shah
b8cd763b21 Merge branch 'main' into bump-swift-version-to-6 2024-02-21 12:40:54 -08:00
Mishal Shah
b488702cc9 Merge remote-tracking branch 'origin/main' into bump-swift-version-to-6 2024-02-20 21:04:47 -08:00
Slava Pestov
0eb146f50a lldb-moduleimport-test: pass correct enableNoncopyableGenerics value to validateSerializedAST() 2024-02-20 18:26:05 -05:00
Kavon Farvardin
f296d8e158 NCGenerics: mass XFAIL tests
It's easier to get a handle on regressions while working through
failures if the tests that are known to not pass are XFAIL'd for
NoncopyableGenerics.
2024-02-20 18:26:05 -05:00
Mishal Shah
96d61d3c5c Merge remote-tracking branch 'origin/main' into bump-swift-version-to-6 2024-02-20 14:31:55 -08:00
Konrad `ktoso` Malawski
f03ddf728b [Macros] Reproduce issue with peer+extension macro extension's methods not being checked as witnesses (#71717)
Co-authored-by: Pavel Yaskevich <pyaskevich@apple.com>
2024-02-20 00:50:29 -08:00
Mishal Shah
af112c1591 Update the Swift version to 6.0 from 5.11 2024-02-19 17:47:16 -08:00
Dave Lee
fc23eef2d2 Disable macro on windows (#71685)
On windows (PECOFF), the `static let` properties produced by `DebugDescriptionMacro` 
are not constants, and as a result the `@_section` macro cannot be applied. The error 
message is:

> global variable must be a compile-time constant to use `@_section` attribute

Until this issue is addressed, DebugDescriptionMacro is disabled for windows targets.
2024-02-19 15:01:11 -08:00
Doug Gregor
e3c2162be2 Cope with change to default diagnostic style 2024-02-19 02:48:36 -10:00
Dave Lee
63e42a4f36 Switch to __TEXT segment (#71639)
The data emitted by `DebugDescriptionMacro` is constant. For that reason, it was placed 
in `__DATA_CONST`. However, this causes a problem with the linker, which emits an error 
 if the `__DATA_CONST` segment is _not_ marked `SG_READ_ONLY`.

After discussion, it was pointed out that if the constant data has no fixups, then it 
can and should be in the the `__TEXT` segment. The `__DATA_CONST` segment is for data 
that is essentially constant but contains dyld fixups.
2024-02-16 07:49:40 -08:00
Apollo Zhu
9ccfb574fd Enable SE-0422 Expression macro as caller-side default argument 2024-02-14 19:22:35 -08:00
Apollo Zhu
8da4b1e714 Check loading from module and interface 2024-02-06 15:02:16 -08:00
Apollo Zhu
f5c596ba57 Test access level check 2024-02-06 15:02:16 -08:00
Apollo Zhu
ea35e1bac2 Use Swift Syntax for checking literals 2024-02-06 15:02:15 -08:00
Apollo Zhu
865bf1eceb Test for diagnostics on access level and type 2024-02-06 15:02:15 -08:00
Apollo Zhu
7cc84f6cb2 Disallow string interpolation 2024-02-06 15:02:14 -08:00
Apollo Zhu
a493b3e5f4 Add rpath for test 2024-02-06 15:02:14 -08:00
Apollo Zhu
cfa044334e Allow literal arguments 2024-02-06 15:02:13 -08:00
Apollo Zhu
b58e3d8f96 Rename test file 2024-02-06 15:02:13 -08:00
Apollo Zhu
f003c49fdf [WIP] Disallow macro default argument with argument
Need to use variable from caller side context
2024-02-06 15:02:12 -08:00
Apollo Zhu
249a369bd0 Arguments are weird 2024-02-06 15:02:12 -08:00
Apollo Zhu
b09a22a9a0 Somewhat working
Test shadowed variable of same type

Fully type check caller side macro expansion

Skip macro default arg caller side expr at decl primary

Test macro expand more complex expressions

Set synthesized expression as implicit

Add test case for with argument, not compiling currently

Test with swiftinterface

Always use the string representation of the default argument

Now works across module boundary

Check works for multiple files

Make default argument expression work in single file

Use expected-error

Disallow expression macro as default argument

Using as a sub expression in default argument still allowed as expression macros behave the same as built-in magic literals
2024-02-06 15:02:11 -08:00
Konrad `ktoso` Malawski
5acd366c98 [macros] allow forwarding generic arguments through macro declarations (#71271)
* [macros] allow forwarding generic arguments through macro declarations

[macros] add more tests for generic argument forwarding in macro declarations

* [macros] correct replacement picking logic
2024-02-06 03:56:20 -08:00
Holly Borla
1707e76ba8 [Macros] Expand nested macros in qualified name lookup. (#71407) 2024-02-06 15:45:24 +09:00
Dave Lee
3a43e7d689 [Debug] Fix regex type names in DebugDescriptionMacro (#71379)
Fixes the way `DebugDescriptionMacro` produces a regex type name.

The problem was use of backslash escapes that weren't sufficiently escaped. They needed 
to be double escaped. To avoid this trap, the regexes now use `[.]` to match a dot, 
instead of the more conventional `\.` syntax.
2024-02-05 10:49:01 -08:00
Holly Borla
93b68cd9df Merge pull request #71365 from hborla/lazy-trc-extension 2024-02-05 08:06:45 -08:00
Doug Gregor
b5632dece2 Merge pull request #71362 from DougGregor/parent-context-of-macro 2024-02-05 06:31:59 -08:00
Allan Shortlidge
67661ccf93 Frontend: Ignore lazy typechecking flags when emitting non-resilient modules.
The `-experimental-lazy-typecheck` and `-experimental-skip-non-exportable-decls`
flags are not safe to use when emitting a non-resilient module because the
clients of non-resilient modules expect to have access to all the members of a
type in order to e.g. compute the size the type. The
`-experimental-skip-non-exportable-decls` flag skips serialization of
non-public members and would therefore cause mis-compilation. The
`-experimental-lazy-typecheck` is theoretically safe for non-resilient modules
but more requestification work is needed before it can be used successfully.

Resolves rdar://122272758
2024-02-04 09:10:46 -08:00
Holly Borla
48eb4b7714 [Availability] Lazily expand type refinement contexts for extensions. 2024-02-02 17:34:40 -08:00