Skip to content

Commit ea1bf9c

Browse files
committed
Add a test that C functions with malformed import-as-member-property API notes don't crash.
1 parent 0feb47f commit ea1bf9c

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
Name: BrokenAPINotes
2+
Functions:
3+
- Name: ZXSpectrumGetAccumulator
4+
SwiftName: 'getter:ZXSpectrum.accumulator(self:)'
5+
- Name: ZXSpectrumSetAccumulator
6+
SwiftName: 'setter:ZXSpectrum.accumulator(self:newValue:)'
7+
- Name: ZXSpectrumGetRegister
8+
SwiftName: 'getter:ZXSpectrum.register(self:which:)'
9+
- Name: ZXSpectrumSetRegister
10+
SwiftName: 'setter:ZXSpectrum.register(self:which:newValue:)'
11+
- Name: ZXSpectrumGetMisnamedRegister
12+
SwiftName: 'getter:ZXSpectrum.misnamedRegister(self:)'
13+
- Name: ZXSpectrumSetMisnamedRegister
14+
SwiftName: 'setter:ZXSpectrum.misnamedRegister(self:newValue:)'
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
typedef struct ZXSpectrum { unsigned char A, B, C, D, H, L; } ZXSpectrum;
2+
3+
unsigned char ZXSpectrumGetAccumulator(const ZXSpectrum *self);
4+
void ZXSpectrumSetAccumulator(ZXSpectrum *self, unsigned char newValue);
5+
6+
unsigned char ZXSpectrumGetRegister(const ZXSpectrum *self, int which);
7+
void ZXSpectrumSetRegister(ZXSpectrum *self, int which, unsigned char newValue);
8+
9+
unsigned char ZXSpectrumGetMisnamedRegister(const ZXSpectrum *self, int which);
10+
void ZXSpectrumSetMisnamedRegister(ZXSpectrum *self, int which, unsigned char newValue);
11+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module BrokenAPINotes {
2+
header "BrokenAPINotes.h"
3+
}

test/APINotes/broken-swift-name.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// RUN: %target-parse-verify-swift -I %S/Inputs/broken-modules
2+
import BrokenAPINotes
3+
4+
func testBrokenSwiftName(x: inout ZXSpectrum) {
5+
_ = x.accumulator
6+
x.accumulator = 0
7+
8+
// The functions that import as `register`'s accessors have incorrect
9+
// signatures for a getter or setter. Ensure we drop the import instead of
10+
// forming an invalid property.
11+
_ = x.register // expected-error{{has no member}}
12+
x.register = 0 // expected-error{{has no member}}
13+
14+
_ = x.misnamedRegister // expected-error{{has no member}}
15+
x.misnamedRegister = 0 // expected-error{{has no member}}
16+
}

0 commit comments

Comments
 (0)