Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/main' into stream
Browse files Browse the repository at this point in the history
  • Loading branch information
brianquinlan committed Oct 4, 2024
2 parents 8069f02 + 0bf27dc commit 5941854
Show file tree
Hide file tree
Showing 91 changed files with 1,299 additions and 566 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ffi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
matrix:
sdk: [dev]
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672
with:
sdk: ${{ matrix.sdk }}
Expand Down Expand Up @@ -61,7 +61,7 @@ jobs:
os: [ubuntu-latest]
sdk: [beta, dev]
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672
with:
sdk: ${{ matrix.sdk }}
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/ffigen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
strategy:
fail-fast: false
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
Expand All @@ -53,7 +53,7 @@ jobs:
run:
working-directory: pkgs/ffigen/
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
Expand All @@ -74,7 +74,7 @@ jobs:
run:
working-directory: pkgs/ffigen/
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
Expand Down Expand Up @@ -105,7 +105,7 @@ jobs:
run:
working-directory: pkgs/ffigen/
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
Expand All @@ -123,7 +123,7 @@ jobs:
run:
working-directory: pkgs/ffigen/
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
Expand Down Expand Up @@ -151,7 +151,7 @@ jobs:
run:
working-directory: pkgs/ffigen/
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: "master"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ffigen_weekly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
run:
working-directory: pkgs/ffigen/
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
flutter-version: 3.19.0
Expand Down
46 changes: 23 additions & 23 deletions .github/workflows/jnigen.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
matrix:
sdk: [stable]
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: ${{ matrix.sdk }}
Expand Down Expand Up @@ -75,13 +75,13 @@ jobs:
os: [ubuntu-latest]
sdk: [stable, beta]
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: ${{ matrix.sdk }}
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: 'zulu'
java-version: '17'
Expand Down Expand Up @@ -126,13 +126,13 @@ jobs:
run:
working-directory: ./pkgs/jni
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: 'zulu'
java-version: '17'
Expand Down Expand Up @@ -164,13 +164,13 @@ jobs:
run:
working-directory: ./pkgs/jni
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: 'zulu'
java-version: '17'
Expand Down Expand Up @@ -213,13 +213,13 @@ jobs:
run:
working-directory: ./pkgs/jni
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: 'zulu'
java-version: '17'
Expand All @@ -235,7 +235,7 @@ jobs:
run:
working-directory: ./pkgs/jnigen
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- name: Setup clang
uses: egor-tensin/setup-clang@ef434b41eb33a70396fb336b1bae39c76d740c3d
with:
Expand All @@ -246,7 +246,7 @@ jobs:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: 'zulu'
java-version: '17'
Expand All @@ -266,13 +266,13 @@ jobs:
run:
working-directory: ./pkgs/jni
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: 'temurin'
java-version: '17'
Expand All @@ -287,7 +287,7 @@ jobs:
run:
working-directory: ./pkgs/jnigen
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- name: Setup clang format
uses: ConorMacBride/install-package@3e7ad059e07782ee54fa35f827df52aae0626f30
with:
Expand All @@ -297,7 +297,7 @@ jobs:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: 'temurin'
java-version: '17'
Expand All @@ -314,13 +314,13 @@ jobs:
run:
working-directory: ./pkgs/jni/example
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: 'zulu'
java-version: '17'
Expand All @@ -338,13 +338,13 @@ jobs:
run:
working-directory: ./pkgs/jni/example
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: 'zulu'
java-version: '17'
Expand All @@ -358,8 +358,8 @@ jobs:
run:
working-directory: ./pkgs/jni/example
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: 'zulu'
java-version: '17'
Expand All @@ -377,13 +377,13 @@ jobs:
run:
working-directory: ./pkgs/jnigen/example/pdfbox_plugin
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: 'zulu'
java-version: '17'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/native.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
working-directory: pkgs/${{ matrix.package }}

steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938

- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/native_toolchain_c.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
working-directory: pkgs/${{ matrix.package }}

steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938

- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672
with:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/objective_c.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
strategy:
fail-fast: false
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
Expand All @@ -49,7 +49,7 @@ jobs:
run:
working-directory: pkgs/objective_c/
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
Expand Down Expand Up @@ -85,7 +85,7 @@ jobs:
run:
working-directory: pkgs/objective_c/example/
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
with:
channel: 'stable'
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/swift2objc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
strategy:
fail-fast: false
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672
with:
sdk: stable
Expand All @@ -49,7 +49,7 @@ jobs:
run:
working-directory: pkgs/swift2objc/
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672
with:
sdk: stable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,8 @@ class ObjCBuiltInFunctions {
!generateForPackageObjectiveC && builtInEnums.contains(name);
bool isBuiltInProtocol(String name) =>
!generateForPackageObjectiveC && builtInProtocols.contains(name);
bool isNSObject(String name) => name == 'NSObject';
static bool isNSObject(String name) => name == 'NSObject';

// We need to load a separate instance of objc_msgSend for each signature. If
// the return type is a struct, we need to use objc_msgSend_stret instead, and
// for float return types we need objc_msgSend_fpret.
Expand Down
16 changes: 14 additions & 2 deletions pkgs/ffigen/lib/src/code_generator/objc_interface.dart
Original file line number Diff line number Diff line change
Expand Up @@ -279,8 +279,11 @@ class ObjCInterface extends BindingType with ObjCMethods {
// - Methods that return instancetype, because the subclass's copy of the
// method needs to return the subclass, not the super class.
// Note: instancetype is only allowed as a return type, not an arg type.
final isNSObject = ObjCBuiltInFunctions.isNSObject(originalName);
for (final m in superType!.methods) {
if (m.isClassMethod &&
if (isNSObject) {
addMethod(m);
} else if (m.isClassMethod &&
!_excludedNSObjectMethods.contains(m.originalName)) {
addMethod(m);
} else if (ObjCBuiltInFunctions.isInstanceType(m.returnType)) {
Expand All @@ -290,8 +293,17 @@ class ObjCInterface extends BindingType with ObjCMethods {
}

void _copyMethodsFromProtocol(ObjCProtocol proto) {
final isNSObject = ObjCBuiltInFunctions.isNSObject(originalName);
for (final m in proto.methods) {
if (!_excludedNSObjectMethods.contains(m.originalName)) {
if (isNSObject) {
if (m.originalName == 'description' || m.originalName == 'hash') {
// TODO(https://github.com/dart-lang/native/issues/1220): Remove this
// special case. These methods only clash because they're sometimes
// declared as getters and sometimes as normal methods.
} else {
addMethod(m);
}
} else if (!_excludedNSObjectMethods.contains(m.originalName)) {
addMethod(m);
}
}
Expand Down
2 changes: 1 addition & 1 deletion pkgs/ffigen/lib/src/code_generator/objc_protocol.dart
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ ${makeDartDoc(dartDoc ?? originalName)}abstract final class $name {
}

void _copyMethodsFromSuperType(ObjCProtocol superProtocol) {
if (builtInFunctions.isNSObject(superProtocol.originalName)) {
if (ObjCBuiltInFunctions.isNSObject(superProtocol.originalName)) {
// When writing a protocol that doesn't inherit from any other protocols,
// it's typical to have it inherit from NSObject instead. But NSObject has
// heaps of methods that users are very unlikely to want to implement, so
Expand Down
3 changes: 3 additions & 0 deletions pkgs/ffigen/test/large_integration_tests/large_objc_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,11 @@ void main() {
'attributedString',
'cachePolicy',
'candidateListTouchBarItem',
'delegate',
'hyphenationFactor',
'image',
'isProxy',
'objCType',
'tag',
'title',
};
Expand Down
2 changes: 1 addition & 1 deletion pkgs/ffigen/test/native_objc_test/block_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,7 @@ void main() {
final dummyObject = DummyObject.new1();
DartObjectListenerBlock? block =
ObjectListenerBlock.listener((DummyObject obj) {
expect(objectRetainCount(obj.ref.pointer), 1);
expect(objectRetainCount(obj.ref.pointer), greaterThan(0));
completer.complete();
expect(dummyObject, isNotNull);
});
Expand Down
Loading

0 comments on commit 5941854

Please sign in to comment.