From 8390b565d1abf522a3b9b80c178d2956858d8fd5 Mon Sep 17 00:00:00 2001 From: Joe Eli McIlvain Date: Sat, 12 Mar 2022 12:33:36 -0800 Subject: [PATCH 1/3] Fix a small bug in manifest transitive dependency resolution. Tests for this bug will follow in a future PR. --- src/savi/compiler/manifests.cr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/savi/compiler/manifests.cr b/src/savi/compiler/manifests.cr index 7b1d8b81..fee8bdee 100644 --- a/src/savi/compiler/manifests.cr +++ b/src/savi/compiler/manifests.cr @@ -338,7 +338,7 @@ class Savi::Compiler::Manifests private def check_transitive_deps(ctx, manifest, dep, dep_manifest) dep_manifest.dependencies.each { |dep_dep| # Check that the transitive dependency has been loaded. - if !@manifests_by_name.has_key?(dep_dep.name.value) + if !manifest.dependencies.any?(&.name.value.==(dep_dep.name.value)) can_fix = dep_dep.location_nodes.any? fix_lines = ["\n"] fix_lines << " :transitive dependency #{dep_dep.name.value} #{dep_dep.version.try(&.value)}" From 0950bb984de890d619c00cb75aec917a34a073f4 Mon Sep 17 00:00:00 2001 From: Joe Eli McIlvain Date: Sat, 12 Mar 2022 12:34:23 -0800 Subject: [PATCH 2/3] Fix debug info generation for a pointer to a Savi `:struct` value. --- src/savi/compiler/code_gen/debug_info.cr | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/savi/compiler/code_gen/debug_info.cr b/src/savi/compiler/code_gen/debug_info.cr index 344cf62d..9087bba5 100644 --- a/src/savi/compiler/code_gen/debug_info.cr +++ b/src/savi/compiler/code_gen/debug_info.cr @@ -297,7 +297,11 @@ class Savi::Compiler::CodeGen ), ) elsif t.llvm_use_type(ctx) == :struct_value - di_create_fields_struct_type(t, llvm_type) + if llvm_type.kind == LLVM::Type::Kind::Pointer + di_create_object_struct_pointer_type(t, llvm_type) + else + di_create_fields_struct_type(t, llvm_type) + end elsif t.llvm_use_type(ctx) == :struct_ptr di_create_object_struct_pointer_type(t, llvm_type) elsif t.llvm_use_type(ctx) == :struct_ptr_opaque From c8a1093a1514283af1949852f83c8cc66260c313 Mon Sep 17 00:00:00 2001 From: Joe Eli McIlvain Date: Sat, 12 Mar 2022 13:03:03 -0800 Subject: [PATCH 3/3] Update spec/integration/fix-manifests-missing-transitive-deps/savi.errors.txt --- .../savi.errors.txt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/spec/integration/fix-manifests-missing-transitive-deps/savi.errors.txt b/spec/integration/fix-manifests-missing-transitive-deps/savi.errors.txt index e1e2cf68..05d67c54 100644 --- a/spec/integration/fix-manifests-missing-transitive-deps/savi.errors.txt +++ b/spec/integration/fix-manifests-missing-transitive-deps/savi.errors.txt @@ -9,7 +9,7 @@ from ./manifest.savi:1: ^~~~~~~~~ - this transitive dependency needs to be added: - from ./deps/github:savi-lang/TCP/v0.20220304.0/manifest.savi:4: + from ./deps/github:savi-lang/TCP/v0.20220309.0/manifest.savi:4: :dependency ByteStream v0 ^~~~~~~~~~ @@ -28,7 +28,7 @@ from ./manifest.savi:4: ^~~ - this transitive dependency needs to be added: - from ./deps/github:savi-lang/TCP/v0.20220304.0/manifest.savi:4: + from ./deps/github:savi-lang/TCP/v0.20220309.0/manifest.savi:4: :dependency ByteStream v0 ^~~~~~~~~~ @@ -42,7 +42,7 @@ from ./manifest.savi:1: ^~~~~~~~~ - this transitive dependency needs to be added: - from ./deps/github:savi-lang/TCP/v0.20220304.0/manifest.savi:7: + from ./deps/github:savi-lang/TCP/v0.20220309.0/manifest.savi:7: :dependency IO v0 ^~ @@ -61,7 +61,7 @@ from ./manifest.savi:4: ^~~ - this transitive dependency needs to be added: - from ./deps/github:savi-lang/TCP/v0.20220304.0/manifest.savi:7: + from ./deps/github:savi-lang/TCP/v0.20220309.0/manifest.savi:7: :dependency IO v0 ^~ @@ -75,7 +75,7 @@ from ./manifest.savi:1: ^~~~~~~~~ - this transitive dependency needs to be added: - from ./deps/github:savi-lang/TCP/v0.20220304.0/manifest.savi:12: + from ./deps/github:savi-lang/TCP/v0.20220309.0/manifest.savi:12: :dependency OSError v0 ^~~~~~~ @@ -84,6 +84,8 @@ from ./manifest.savi:1: :dependency TCP v0 ^~~ +- run again with --fix to auto-fix this issue. + --- A `:depends on` declaration is missing from this dependency: @@ -92,7 +94,7 @@ from ./manifest.savi:4: ^~~ - this transitive dependency needs to be added: - from ./deps/github:savi-lang/TCP/v0.20220304.0/manifest.savi:12: + from ./deps/github:savi-lang/TCP/v0.20220309.0/manifest.savi:12: :dependency OSError v0 ^~~~~~~