-
Notifications
You must be signed in to change notification settings - Fork 85
Closed
dart-archive/ffigen
#49Labels
Description
Function names are sanitized to avoid conflicts with reserved Dart keywords, but function argument names are not. For example:
// test.h
void var(void *in);While the function is renamed to var_1, the conflicting in argument name is kept as is, which results to a parsing error:
$ dart pub run ffigen
Running in Directory: '/home/jpnurmi/Temp/test_ffigen'
WARNING : Prefer adding Key 'name' to your config.
WARNING : Prefer adding Key 'description' to your config.
Input Headers: [test.h]
WARNING : Resolved name conflict: Declaration 'var' and has been renamed to 'var_1'.
SEVERE : Could not format because the source could not be parsed:
line 14, column 25 of test.dart: Expected an identifier.
╷
14 │ ffi.Pointer<ffi.Void> in,
│ ^^
╵
line 30, column 25 of test.dart: Expected an identifier.
╷
30 │ ffi.Pointer<ffi.Void> in,
│ ^^
╵
line 26, column 25 of test.dart: Expected an identifier.
╷
26 │ ffi.Pointer<ffi.Void> in,
│ ^^
╵
line 18, column 5 of test.dart: Expected an identifier.
╷
18 │ in,
│ ^^
╵
Finished, Bindings generated in /home/jpnurmi/Temp/test_ffigen/test.darttest.dart:
/// AUTO GENERATED FILE, DO NOT EDIT.
///
/// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
class NativeLibrary{
/// Holds the Dynamic library.
final ffi.DynamicLibrary _dylib;
/// The symbols are looked up in [dynamicLibrary].
NativeLibrary(ffi.DynamicLibrary dynamicLibrary): _dylib = dynamicLibrary;
void var_1(
ffi.Pointer<ffi.Void> in,
) {
_var_1 ??= _dylib.lookupFunction<_c_var_1,_dart_var_1>('var');
return _var_1(
in,
);
}
_dart_var_1 _var_1;
}
typedef _c_var_1 = ffi.Void Function(
ffi.Pointer<ffi.Void> in,
);
typedef _dart_var_1 = void Function(
ffi.Pointer<ffi.Void> in,
);