Skip to content

Commit 34d28f1

Browse files
Fix castTo and publish 0.10.0 (#1323)
1 parent c46b0cd commit 34d28f1

File tree

8 files changed

+20
-9
lines changed

8 files changed

+20
-9
lines changed

pkgs/jni/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 0.10.0
2+
3+
- Fixed an issue with `JObject.castTo` where the type checking could fail in
4+
debug mode.
5+
- Used `package:dart_flutter_team_lints`.
6+
17
## 0.9.3
28

39
- Added lifetime event handling for the thread-local JNI env. Now

pkgs/jni/lib/src/jobject.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ final class JObjectType extends JObjType<JObject> {
4343
/// A high-level wrapper for JNI global object reference.
4444
///
4545
/// This is the base class for classes generated by `jnigen`.
46-
class JObject {
46+
class JObject implements Finalizable {
4747
final JReference reference;
4848

4949
late final JObjType<JObject> $type = type;
@@ -83,7 +83,12 @@ class JObject {
8383
bool releaseOriginal = false,
8484
}) {
8585
assert(
86-
Jni.env.IsInstanceOf(reference.pointer, type.jClass.reference.pointer),
86+
() {
87+
final jClass = type.jClass.reference.toPointer();
88+
final canBeCasted = Jni.env.IsInstanceOf(reference.pointer, jClass);
89+
Jni.env.DeleteGlobalRef(jClass);
90+
return canBeCasted;
91+
}(),
8792
'The object must be of type "${type.signature}".',
8893
);
8994
if (releaseOriginal) {

pkgs/jni/lib/src/jreference.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ final class _JFinalizable implements Finalizable {
3939
}
4040

4141
@pragma('vm:deeply-immutable')
42-
abstract final class JReference {
42+
abstract final class JReference implements Finalizable {
4343
final _JFinalizable _finalizable;
4444

4545
JReference(this._finalizable);

pkgs/jni/test/exception_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ void main() {
3030
if (!caught) {
3131
stderr.writeln('Expected HelperNotFoundException\n'
3232
'Read exception_test.dart for details.');
33-
exit(-1);
33+
exit(1);
3434
}
3535
}
3636
run(testRunner: test);

pkgs/jni/tool/generate_ide_files.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ void runCommand(String exec, List<String> args, String workingDirectory) {
2222
stdout.writeln(process.stdout);
2323
stderr.writeln(process.stderr);
2424
stderr.writeln('command failed with exit code ${process.exitCode}');
25-
exit(-1);
25+
exit(1);
2626
}
2727
}
2828

pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ ResultWrapper getResultWrapper(String returnType) {
179179
return ResultWrapper.forJValueField(jfields[returnType]!);
180180
}
181181
stderr.writeln('Unknown type $returnType for return type');
182-
exit(-1);
182+
exit(1);
183183
}
184184
}
185185

pkgs/jni/tool/wrapper_generators/generate_dart_extensions.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ String getCheckedGetter(Type returnType) {
7171
return mappings[cType]!;
7272
}
7373
stderr.writeln('Unknown return type: $cType');
74-
exit(-1);
74+
exit(1);
7575
}
7676

7777
String? getGlobalEnvExtensionFunction(Member field, Type? checkedReturnType) {

pkgs/jnigen/CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
## 0.10.0-wip
1+
## 0.10.0
22

33
- Added support for Kotlin's top-level functions and fields.
4-
- Use `package:dart_flutter_team_lints`.
4+
- Used `package:dart_flutter_team_lints`.
55

66
## 0.9.3
77

0 commit comments

Comments
 (0)