Skip to content

Commit 2f3ca9d

Browse files
Merge branch '133-support-newer-analyzer-and-source_gen-versions' into 'main'
Generator: allow new major versions of analyzer and source_gen #133 See merge request objectbox/objectbox-dart!103
2 parents 8e68e68 + 058fc69 commit 2f3ca9d

File tree

6 files changed

+38
-40
lines changed

6 files changed

+38
-40
lines changed

.github/workflows/code-analysis.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ env:
1919
DART_VERSION: 3.7.2 # Available versions: https://dart.dev/get-dart/archive
2020

2121
jobs:
22-
analyze-and-format:
22+
format-and-analyze:
2323
runs-on: ubuntu-24.04
2424
steps:
2525
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
@@ -33,6 +33,13 @@ jobs:
3333
dart pub get --directory=generator
3434
dart pub get --directory=objectbox
3535
dart pub get --directory=objectbox_test
36+
flutter pub get --directory=flutter_libs
37+
flutter pub get --directory=sync_flutter_libs
38+
# Since Dart 3.7, dart format needs pub get to run before formatting,
39+
# so to check formatting of Flutter packages run pub get for them as well.
40+
# Also run before generating code to exclude generated code.
41+
- name: Check formatting of all packages
42+
run: dart format --set-exit-if-changed .
3643
- name: Generate code (benchmark)
3744
working-directory: benchmark
3845
run: dart run build_runner build
@@ -45,13 +52,6 @@ jobs:
4552
dart analyze generator
4653
dart analyze objectbox
4754
dart analyze objectbox_test
48-
- name: Check formatting of all packages
49-
# Since Dart 3.7, dart format needs pub get to run before formatting,
50-
# so to check formatting of Flutter packages run pub get for them first.
51-
run: |
52-
flutter pub get --directory=flutter_libs
53-
flutter pub get --directory=sync_flutter_libs
54-
dart format --set-exit-if-changed .
5555
5656
pana:
5757
runs-on: ubuntu-24.04

.gitlab-ci.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ variables:
3333
key: "linux-x64-dart-$DART_VERSION-pub-cache"
3434

3535
# Analyze (only) Dart packages, check formatting in Dart and Flutter packages.
36-
analyze-and-format:
36+
format-and-analyze:
3737
extends: .cache
3838
stage: code-analysis
3939
script:
@@ -43,6 +43,14 @@ analyze-and-format:
4343
- dart pub get --directory=objectbox
4444
- dart pub get --directory=objectbox_test
4545
- dart pub get --directory=objectbox/example/dart-native/vectorsearch_cities
46+
# Since Dart 3.7, dart format needs pub get to run before formatting,
47+
# so can no longer check formatting of Flutter packages (would require Flutter SDK):
48+
# Check formatting only for Dart packages (run before generating code to exclude generated code)
49+
- dart format --set-exit-if-changed benchmark
50+
- dart format --set-exit-if-changed generator
51+
- dart format --set-exit-if-changed objectbox
52+
- dart format --set-exit-if-changed objectbox_test
53+
- dart format --set-exit-if-changed objectbox/example/dart-native
4654
# Generate code
4755
- cd benchmark
4856
- dart run build_runner build
@@ -57,14 +65,6 @@ analyze-and-format:
5765
- dart analyze objectbox
5866
- dart analyze objectbox_test
5967
- dart analyze objectbox/example/dart-native/vectorsearch_cities
60-
# Since Dart 3.7, dart format needs pub get to run before formatting,
61-
# so can no longer check formatting of Flutter packages (would require Flutter SDK):
62-
# Check formatting only for Dart packages
63-
- dart format --set-exit-if-changed benchmark
64-
- dart format --set-exit-if-changed generator
65-
- dart format --set-exit-if-changed objectbox
66-
- dart format --set-exit-if-changed objectbox_test
67-
- dart format --set-exit-if-changed objectbox/example/dart-native
6868

6969
# Runs generator integration tests, e.g. ensures generator works as expected.
7070
# Note: no need to test oldest SDK here, generator package is also built as part of unit-tests job.

generator/lib/src/code_builder.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,8 @@ class CodeBuilder extends Builder {
159159
var code = CodeChunks.objectboxDart(model, imports, pubspec);
160160

161161
try {
162-
code = DartFormatter().format(code);
162+
code = DartFormatter(languageVersion: DartFormatter.latestLanguageVersion)
163+
.format(code);
163164
} finally {
164165
// Write the code even after a formatter error so it's easier to debug.
165166
final codeId = AssetId(

generator/lib/src/entity_resolver.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -447,10 +447,6 @@ class EntityResolver extends Builder {
447447
case IndexType.hash64:
448448
prop.flags |= OBXPropertyFlags.INDEX_HASH64;
449449
break;
450-
default:
451-
throw InvalidGenerationSourceError(
452-
"Entity '${elementBare.name}': index type $indexType not supported.",
453-
element: f);
454450
}
455451
}
456452

generator/pubspec.yaml

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,25 @@ homepage: https://objectbox.io
66
version: 4.1.0
77

88
environment:
9-
sdk: '>=2.18.0 <4.0.0'
9+
sdk: '^3.5.0' # analyzer 6.5.0 requires meta 1.14.0 requires Flutter SDK 3.24.0 requires 3.5.0
1010

1111
dependencies:
1212
objectbox: 4.1.0
13-
analyzer: '>=5.2.0 <7.0.0' # 5.1.0 has a bug where DartType.element has been removed.
14-
build: ^2.0.0
15-
collection: ^1.15.0
16-
dart_style: ^2.0.0
17-
glob: ^2.0.0
18-
path: ^1.8.0
19-
source_gen: ^1.0.0
20-
pubspec_parse: ^1.0.0
21-
yaml: ^3.0.0
22-
http: '>=0.13.5 <2.0.0'
23-
pointycastle: ^3.7.3 # 3.7.4 requires Dart 3, but still supporting 2.18
13+
analyzer: '>=6.5.0 <8.0.0' # dart_style 2.3.7 requires 6.5.0
14+
build: ^2.4.1
15+
collection: ^1.18.0 # Would require 1.19.1, but Flutter 3.24.0 has 1.18.0 pinned
16+
dart_style: '>=2.3.7 <4.0.0' # require 2.3.7 for languageVersion in DartFormatter constructor
17+
glob: ^2.1.3
18+
path: ^1.9.1
19+
source_gen: ">=1.5.0 <3.0.0"
20+
pubspec_parse: ^1.4.0
21+
yaml: ^3.1.3
22+
http: ^1.3.0
23+
pointycastle: ^4.0.0
2424

2525
dev_dependencies:
26-
test: ^1.16.5
27-
# lints 2.1.0+ requires Dart 3, but CI still tests with Dart 2, but also need 3.0.0+ to match pana
28-
lints: '>=2.0.1 <4.0.0'
29-
pub_semver: ^2.1.3
30-
package_config: ^2.1.0
31-
build_test:
26+
test: ^1.25.8
27+
lints: ^3.0.0
28+
pub_semver: ^2.2.0
29+
package_config: ^2.2.0
30+
build_test: ^2.2.2

objectbox/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
## latest
22

3+
* Allow analyzer 7, dart_style 3, source_gen 2 and pointycastle 4.
34
* Examples: demos are compatible with JDK 21 included with Android Studio Ladybug or later, require
45
Flutter SDK 3.24 (with Dart SDK 3.5) or newer.
6+
* Requires at least Dart SDK 3.4 or Flutter SDK 3.22.
57

68
## 4.1.0 (2025-02-04)
79

0 commit comments

Comments
 (0)