From cda4ae67d21c11da46a1a99fb6df6ffec7d1856f Mon Sep 17 00:00:00 2001 From: "Brian R. Murphy" <132495859+brmataptos@users.noreply.github.com> Date: Fri, 21 Jul 2023 11:22:07 -0700 Subject: [PATCH] [compiler] test cases and stdlib source code updates for attributes checks PR --- .../aptos-stdlib/doc/string_utils.md | 54 ++++++------ .../aptos-stdlib/sources/string_utils.move | 1 + .../move_check/parser/attribute_placement.exp | 84 +++++++++++++++++++ .../move_check/parser/attribute_variants.exp | 60 +++++++++++++ .../parser/duplicate_attributes.exp | 18 ++++ .../tests/move_check/parser/testonly.exp | 12 +++ .../tests/move_check/parser/testonly.move | 19 +++++ .../attribute_no_closing_bracket.exp | 8 ++ .../attribute_no_closing_bracket.move | 5 ++ .../attribute_placement.move | 46 ++++++++++ .../attribute_variants.move | 6 ++ .../duplicate_attributes.exp | 24 ++++++ .../duplicate_attributes.move | 7 ++ .../extra_attributes.move | 26 ++++++ .../extra_attributes2.move | 23 +++++ .../skip_attribute_checks/testonly.move | 9 ++ .../tests/move_check/typing/assign_tuple.exp | 9 ++ .../tests/move_check/typing/assign_tuple.move | 15 ++++ .../tests/move_check/typing/tuple.move | 15 ++++ .../unit_test/extra_attributes.move | 1 - .../unit_test/extra_attributes2.move | 23 +++++ .../build_tests/dependency_chain/args.exp | 6 ++ .../tests/build_tests/dev_address/args.exp | 6 ++ .../build_tests/empty_module_no_deps/args.exp | 6 ++ .../include_exclude_stdlib/args.exp | 12 +++ .../build_tests/unbound_address/args.exp | 2 +- .../compilation/basic_no_deps/Move.exp | 2 + .../basic_no_deps_address_assigned/Move.exp | 2 + .../Move.exp | 2 + .../basic_no_deps_test_mode/Move.exp | 2 + .../Move.exp | 2 + .../diamond_problem_no_conflict/Move.exp | 2 + .../compilation/multiple_deps_rename/Move.exp | 2 + .../multiple_deps_rename_one/Move.exp | 2 + .../test_sources/compilation/one_dep/Move.exp | 2 + .../one_dep_assigned_address/Move.exp | 2 + .../compilation/one_dep_renamed/Move.exp | 2 + .../compilation/one_dep_with_scripts/Move.exp | 2 + .../compilation/test_symlinks/Move.exp | 2 + .../invalid_identifier_package_name/Move.exp | 2 + .../parsing/minimal_manifest/Move.exp | 2 + .../resolution/basic_no_deps/Move.exp | 2 + .../basic_no_deps_address_assigned/Move.exp | 2 + .../Move.exp | 2 +- .../Move.exp | 2 + .../resolution/dep_good_digest/Move.exp | 2 + .../Move.exp | 2 + .../diamond_problem_no_conflict/Move.exp | 2 + .../resolution/multiple_deps_rename/Move.exp | 2 + .../test_sources/resolution/one_dep/Move.exp | 2 + .../one_dep_assigned_address/Move.exp | 2 + .../one_dep_multiple_of_same_name/Move.exp | 2 + .../one_dep_reassigned_address/Move.exp | 2 + .../Move.exp | 2 + 54 files changed, 526 insertions(+), 27 deletions(-) create mode 100644 third_party/move/move-compiler/tests/move_check/parser/attribute_placement.exp create mode 100644 third_party/move/move-compiler/tests/move_check/parser/attribute_variants.exp create mode 100644 third_party/move/move-compiler/tests/move_check/parser/testonly.exp create mode 100644 third_party/move/move-compiler/tests/move_check/parser/testonly.move create mode 100644 third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_no_closing_bracket.exp create mode 100644 third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_no_closing_bracket.move create mode 100644 third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_placement.move create mode 100644 third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_variants.move create mode 100644 third_party/move/move-compiler/tests/move_check/skip_attribute_checks/duplicate_attributes.exp create mode 100644 third_party/move/move-compiler/tests/move_check/skip_attribute_checks/duplicate_attributes.move create mode 100644 third_party/move/move-compiler/tests/move_check/skip_attribute_checks/extra_attributes.move create mode 100644 third_party/move/move-compiler/tests/move_check/skip_attribute_checks/extra_attributes2.move create mode 100644 third_party/move/move-compiler/tests/move_check/skip_attribute_checks/testonly.move create mode 100644 third_party/move/move-compiler/tests/move_check/typing/assign_tuple.exp create mode 100644 third_party/move/move-compiler/tests/move_check/typing/assign_tuple.move create mode 100644 third_party/move/move-compiler/tests/move_check/typing/tuple.move create mode 100644 third_party/move/move-compiler/tests/move_check/unit_test/extra_attributes2.move diff --git a/aptos-move/framework/aptos-stdlib/doc/string_utils.md b/aptos-move/framework/aptos-stdlib/doc/string_utils.md index 47d50542582151..b19ef7cd4d5ba1 100644 --- a/aptos-move/framework/aptos-stdlib/doc/string_utils.md +++ b/aptos-move/framework/aptos-stdlib/doc/string_utils.md @@ -9,7 +9,8 @@ A module for formatting move values as strings. - [Struct `Cons`](#0x1_string_utils_Cons) - [Struct `NIL`](#0x1_string_utils_NIL) - [Struct `FakeCons`](#0x1_string_utils_FakeCons) -- [Constants](#@Constants_0) + - [[test_only]](#@[test_only]_0) +- [Constants](#@Constants_1) - [Function `to_string`](#0x1_string_utils_to_string) - [Function `to_string_with_canonical_addresses`](#0x1_string_utils_to_string_with_canonical_addresses) - [Function `to_string_with_integer_types`](#0x1_string_utils_to_string_with_integer_types) @@ -26,17 +27,17 @@ A module for formatting move values as strings. - [Function `list4`](#0x1_string_utils_list4) - [Function `native_format`](#0x1_string_utils_native_format) - [Function `native_format_list`](#0x1_string_utils_native_format_list) -- [Specification](#@Specification_1) - - [Function `to_string`](#@Specification_1_to_string) - - [Function `to_string_with_canonical_addresses`](#@Specification_1_to_string_with_canonical_addresses) - - [Function `to_string_with_integer_types`](#@Specification_1_to_string_with_integer_types) - - [Function `debug_string`](#@Specification_1_debug_string) - - [Function `format1`](#@Specification_1_format1) - - [Function `format2`](#@Specification_1_format2) - - [Function `format3`](#@Specification_1_format3) - - [Function `format4`](#@Specification_1_format4) - - [Function `native_format`](#@Specification_1_native_format) - - [Function `native_format_list`](#@Specification_1_native_format_list) +- [Specification](#@Specification_2) + - [Function `to_string`](#@Specification_2_to_string) + - [Function `to_string_with_canonical_addresses`](#@Specification_2_to_string_with_canonical_addresses) + - [Function `to_string_with_integer_types`](#@Specification_2_to_string_with_integer_types) + - [Function `debug_string`](#@Specification_2_debug_string) + - [Function `format1`](#@Specification_2_format1) + - [Function `format2`](#@Specification_2_format2) + - [Function `format3`](#@Specification_2_format3) + - [Function `format4`](#@Specification_2_format4) + - [Function `native_format`](#@Specification_2_native_format) + - [Function `native_format_list`](#@Specification_2_native_format_list)
use 0x1::string;
@@ -109,6 +110,11 @@ A module for formatting move values as strings.
 ## Struct `FakeCons`
 
 
+
+
+### [test_only]
+
+
 
 
#[testonly]
 struct FakeCons<T, N> has copy, drop, store
@@ -138,7 +144,7 @@ A module for formatting move values as strings.
 
 
 
-
+
 
 ## Constants
 
@@ -542,12 +548,12 @@ Formatting with a rust-like format string, eg. 
+
 
 ## Specification
 
 
-
+
 
 ### Function `to_string`
 
@@ -564,7 +570,7 @@ Formatting with a rust-like format string, eg. 
+
 
 ### Function `to_string_with_canonical_addresses`
 
@@ -581,7 +587,7 @@ Formatting with a rust-like format string, eg. 
+
 
 ### Function `to_string_with_integer_types`
 
@@ -598,7 +604,7 @@ Formatting with a rust-like format string, eg. 
+
 
 ### Function `debug_string`
 
@@ -615,7 +621,7 @@ Formatting with a rust-like format string, eg. 
+
 
 ### Function `format1`
 
@@ -632,7 +638,7 @@ Formatting with a rust-like format string, eg. 
+
 
 ### Function `format2`
 
@@ -649,7 +655,7 @@ Formatting with a rust-like format string, eg. 
+
 
 ### Function `format3`
 
@@ -666,7 +672,7 @@ Formatting with a rust-like format string, eg. 
+
 
 ### Function `format4`
 
@@ -683,7 +689,7 @@ Formatting with a rust-like format string, eg. 
+
 
 ### Function `native_format`
 
@@ -701,7 +707,7 @@ Formatting with a rust-like format string, eg. 
+
 
 ### Function `native_format_list`
 
diff --git a/aptos-move/framework/aptos-stdlib/sources/string_utils.move b/aptos-move/framework/aptos-stdlib/sources/string_utils.move
index c7e3645e7d14a0..f6ee46dce7b50d 100644
--- a/aptos-move/framework/aptos-stdlib/sources/string_utils.move
+++ b/aptos-move/framework/aptos-stdlib/sources/string_utils.move
@@ -108,6 +108,7 @@ module aptos_std::string_utils {
     }
 
     #[testonly]
+    /// #[test_only]
     struct FakeCons has copy, drop, store {
         car: T,
         cdr: N,
diff --git a/third_party/move/move-compiler/tests/move_check/parser/attribute_placement.exp b/third_party/move/move-compiler/tests/move_check/parser/attribute_placement.exp
new file mode 100644
index 00000000000000..aee01fa4e65f6f
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/parser/attribute_placement.exp
@@ -0,0 +1,84 @@
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_placement.move:3:3
+  │
+3 │ #[attr]
+  │   ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_placement.move:5:7
+  │
+5 │     #[attr]
+  │       ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_placement.move:8:7
+  │
+8 │     #[attr]
+  │       ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/attribute_placement.move:11:7
+   │
+11 │     #[attr]
+   │       ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/attribute_placement.move:14:7
+   │
+14 │     #[attr]
+   │       ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/attribute_placement.move:17:7
+   │
+17 │     #[attr]
+   │       ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/attribute_placement.move:22:3
+   │
+22 │ #[attr]
+   │   ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/attribute_placement.move:24:7
+   │
+24 │     #[attr]
+   │       ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/attribute_placement.move:27:7
+   │
+27 │     #[attr]
+   │       ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/attribute_placement.move:31:3
+   │
+31 │ #[attr]
+   │   ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/attribute_placement.move:33:7
+   │
+33 │     #[attr]
+   │       ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/attribute_placement.move:36:7
+   │
+36 │     #[attr]
+   │       ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/attribute_placement.move:39:7
+   │
+39 │     #[attr]
+   │       ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/attribute_placement.move:44:7
+   │
+44 │     #[attr]
+   │       ^^^^ Attribute name 'attr' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
diff --git a/third_party/move/move-compiler/tests/move_check/parser/attribute_variants.exp b/third_party/move/move-compiler/tests/move_check/parser/attribute_variants.exp
new file mode 100644
index 00000000000000..8d58dee27063a4
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/parser/attribute_variants.exp
@@ -0,0 +1,60 @@
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_variants.move:2:3
+  │
+2 │ #[attr0]
+  │   ^^^^^ Attribute name 'attr0' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_variants.move:3:3
+  │
+3 │ #[attr1=0, attr2=b"hello", attr3=x"0f", attr4=0x42, attr5(attr0, attr1, attr2(attr0, attr1=0))]
+  │   ^^^^^ Attribute name 'attr1' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_variants.move:3:12
+  │
+3 │ #[attr1=0, attr2=b"hello", attr3=x"0f", attr4=0x42, attr5(attr0, attr1, attr2(attr0, attr1=0))]
+  │            ^^^^^ Attribute name 'attr2' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_variants.move:3:28
+  │
+3 │ #[attr1=0, attr2=b"hello", attr3=x"0f", attr4=0x42, attr5(attr0, attr1, attr2(attr0, attr1=0))]
+  │                            ^^^^^ Attribute name 'attr3' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_variants.move:3:41
+  │
+3 │ #[attr1=0, attr2=b"hello", attr3=x"0f", attr4=0x42, attr5(attr0, attr1, attr2(attr0, attr1=0))]
+  │                                         ^^^^^ Attribute name 'attr4' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_variants.move:3:53
+  │
+3 │ #[attr1=0, attr2=b"hello", attr3=x"0f", attr4=0x42, attr5(attr0, attr1, attr2(attr0, attr1=0))]
+  │                                                     ^^^^^ Attribute name 'attr5' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_variants.move:4:3
+  │
+4 │ #[bttr0=false, bttr1=0u8, bttr2=0u64, bttr3=0u128]
+  │   ^^^^^ Attribute name 'bttr0' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_variants.move:4:16
+  │
+4 │ #[bttr0=false, bttr1=0u8, bttr2=0u64, bttr3=0u128]
+  │                ^^^^^ Attribute name 'bttr1' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_variants.move:4:27
+  │
+4 │ #[bttr0=false, bttr1=0u8, bttr2=0u64, bttr3=0u128]
+  │                           ^^^^^ Attribute name 'bttr2' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/attribute_variants.move:4:39
+  │
+4 │ #[bttr0=false, bttr1=0u8, bttr2=0u64, bttr3=0u128]
+  │                                       ^^^^^ Attribute name 'bttr3' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
diff --git a/third_party/move/move-compiler/tests/move_check/parser/duplicate_attributes.exp b/third_party/move/move-compiler/tests/move_check/parser/duplicate_attributes.exp
index 4930a1562bd0e8..ece55e6ee1b769 100644
--- a/third_party/move/move-compiler/tests/move_check/parser/duplicate_attributes.exp
+++ b/third_party/move/move-compiler/tests/move_check/parser/duplicate_attributes.exp
@@ -1,3 +1,15 @@
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/duplicate_attributes.move:2:7
+  │
+2 │     #[a, a(x = 0)]
+  │       ^ Attribute name 'a' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/duplicate_attributes.move:2:10
+  │
+2 │     #[a, a(x = 0)]
+  │          ^ Attribute name 'a' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
 error[E02001]: duplicate declaration, item, or annotation
   ┌─ tests/move_check/parser/duplicate_attributes.move:2:10
   │
@@ -6,6 +18,12 @@ error[E02001]: duplicate declaration, item, or annotation
   │       │   
   │       Attribute previously given here
 
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/duplicate_attributes.move:5:7
+  │
+5 │     #[b(a, a = 0, a(x = 1))]
+  │       ^ Attribute name 'b' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
 error[E02001]: duplicate declaration, item, or annotation
   ┌─ tests/move_check/parser/duplicate_attributes.move:5:12
   │
diff --git a/third_party/move/move-compiler/tests/move_check/parser/testonly.exp b/third_party/move/move-compiler/tests/move_check/parser/testonly.exp
new file mode 100644
index 00000000000000..0dc78b0a3f312c
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/parser/testonly.exp
@@ -0,0 +1,12 @@
+warning[W02016]: unknown attribute
+  ┌─ tests/move_check/parser/testonly.move:5:7
+  │
+5 │     #[testonly]
+  │       ^^^^^^^^ Attribute name 'testonly' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
+warning[W02016]: unknown attribute
+   ┌─ tests/move_check/parser/testonly.move:15:7
+   │
+15 │     #[view]
+   │       ^^^^ Attribute name 'view' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
diff --git a/third_party/move/move-compiler/tests/move_check/parser/testonly.move b/third_party/move/move-compiler/tests/move_check/parser/testonly.move
new file mode 100644
index 00000000000000..6631942d17dc6a
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/parser/testonly.move
@@ -0,0 +1,19 @@
+module 0x1::A {
+    #[test]
+    fun a() { }
+
+    #[testonly]
+    public fun a_call() {
+        abort 0
+    }
+
+    #[test_only]
+    public fun b_call() {
+        abort 0
+    }
+
+    #[view]
+    public fun c_call() {
+        abort 0
+    }
+}
diff --git a/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_no_closing_bracket.exp b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_no_closing_bracket.exp
new file mode 100644
index 00000000000000..3148a6a7ca752e
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_no_closing_bracket.exp
@@ -0,0 +1,8 @@
+error[E01002]: unexpected token
+  ┌─ tests/move_check/skip_attribute_checks/attribute_no_closing_bracket.move:4:5
+  │
+3 │     #[attr = 0
+  │      - To match this '['
+4 │     fun foo() {}
+  │     ^ Expected ']'
+
diff --git a/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_no_closing_bracket.move b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_no_closing_bracket.move
new file mode 100644
index 00000000000000..9a28c27c391e46
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_no_closing_bracket.move
@@ -0,0 +1,5 @@
+module 0x42::M {
+    // Errors expecting a ']'
+    #[attr = 0
+    fun foo() {}
+}
diff --git a/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_placement.move b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_placement.move
new file mode 100644
index 00000000000000..0c50c6f7a5485c
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_placement.move
@@ -0,0 +1,46 @@
+#[attr]
+address 0x42 {
+#[attr]
+module M {
+    #[attr]
+    use 0x42::N;
+
+    #[attr]
+    struct S {}
+
+    #[attr]
+    const C: u64 = 0;
+
+    #[attr]
+    public fun foo() { N::bar() }
+
+    #[attr]
+    spec foo {}
+}
+}
+
+#[attr]
+module 0x42::N {
+    #[attr]
+    friend 0x42::M;
+
+    #[attr]
+    public fun bar() {}
+}
+
+#[attr]
+script {
+    #[attr]
+    use 0x42::M;
+
+    #[attr]
+    const C: u64 = 0;
+
+    #[attr]
+    fun main() {
+        M::foo();
+    }
+
+    #[attr]
+    spec main { }
+}
diff --git a/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_variants.move b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_variants.move
new file mode 100644
index 00000000000000..482fa4cbacaccb
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/attribute_variants.move
@@ -0,0 +1,6 @@
+#[]
+#[attr0]
+#[attr1=0, attr2=b"hello", attr3=x"0f", attr4=0x42, attr5(attr0, attr1, attr2(attr0, attr1=0))]
+#[bttr0=false, bttr1=0u8, bttr2=0u64, bttr3=0u128]
+#[]
+module 0x42::M {}
diff --git a/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/duplicate_attributes.exp b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/duplicate_attributes.exp
new file mode 100644
index 00000000000000..1de53e06c5e250
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/duplicate_attributes.exp
@@ -0,0 +1,24 @@
+error[E02001]: duplicate declaration, item, or annotation
+  ┌─ tests/move_check/skip_attribute_checks/duplicate_attributes.move:2:10
+  │
+2 │     #[a, a(x = 0)]
+  │       -  ^^^^^^^^ Duplicate attribute 'a' attached to the same item
+  │       │   
+  │       Attribute previously given here
+
+error[E02001]: duplicate declaration, item, or annotation
+  ┌─ tests/move_check/skip_attribute_checks/duplicate_attributes.move:5:12
+  │
+5 │     #[b(a, a = 0, a(x = 1))]
+  │         -  ^^^^^ Duplicate attribute 'a' attached to the same item
+  │         │   
+  │         Attribute previously given here
+
+error[E02001]: duplicate declaration, item, or annotation
+  ┌─ tests/move_check/skip_attribute_checks/duplicate_attributes.move:5:19
+  │
+5 │     #[b(a, a = 0, a(x = 1))]
+  │         -         ^^^^^^^^ Duplicate attribute 'a' attached to the same item
+  │         │          
+  │         Attribute previously given here
+
diff --git a/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/duplicate_attributes.move b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/duplicate_attributes.move
new file mode 100644
index 00000000000000..e2de77f0f23a4b
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/duplicate_attributes.move
@@ -0,0 +1,7 @@
+module 0x42::M {
+    #[a, a(x = 0)]
+    fun foo() {}
+
+    #[b(a, a = 0, a(x = 1))]
+    fun bar() {}
+}
diff --git a/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/extra_attributes.move b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/extra_attributes.move
new file mode 100644
index 00000000000000..11ff5533c4f37a
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/extra_attributes.move
@@ -0,0 +1,26 @@
+// tests non-abort related execution failures
+module 0x1::n {}
+module 0x1::m {
+    #[test_only]
+    use 0x1::n;
+
+    #[test]
+    #[expected_failure(vector_error, location=std::vector, hello=0)]
+    fun t0() { }
+
+    #[test]
+    #[expected_failure(arithmetic_error, location=n, wowza)]
+    fun t1() { }
+
+    #[test]
+    #[expected_failure(out_of_gas, location=Self, so_many_attrs)]
+    fun t2() { }
+
+    #[test]
+    #[expected_failure(major_status=4004, an_attr_here_is_unused, location=Self)]
+    fun t3() { }
+
+    #[test]
+    #[expected_failure(major_status=4016, minor_code=0, location=Self)]
+    fun t4() { }
+}
diff --git a/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/extra_attributes2.move b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/extra_attributes2.move
new file mode 100644
index 00000000000000..ba09afd866987b
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/extra_attributes2.move
@@ -0,0 +1,23 @@
+// tests non-abort related execution failures with errors in attributes
+module 0x1::n {}
+module 0x1::m {
+    #[test]
+    #[expected_failure(arithmetic_error, location=Self)]
+    fun t5() { }
+
+    #[test]
+    #[expected_failure(abort_code=3, test, location=Self)]
+    fun t6() { }
+
+    #[test]
+    #[expected_failure(vector_error, test_only, location=Self)]
+    fun t7() { }
+
+    #[test_only]
+    #[expected_failure(bytecode_instruction, location=Self)]
+    fun t8() { }
+
+    #[test]
+    #[expected_failure(verify_only)]
+    fun t9() { }
+}
diff --git a/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/testonly.move b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/testonly.move
new file mode 100644
index 00000000000000..0923625d717ba1
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/skip_attribute_checks/testonly.move
@@ -0,0 +1,9 @@
+module 0x1::A {
+    #[test]
+    fun a() { }
+
+    #[testonly]
+    public fun a_call() {
+        abort 0
+    }
+}
diff --git a/third_party/move/move-compiler/tests/move_check/typing/assign_tuple.exp b/third_party/move/move-compiler/tests/move_check/typing/assign_tuple.exp
new file mode 100644
index 00000000000000..d547fa6237e241
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/typing/assign_tuple.exp
@@ -0,0 +1,9 @@
+error[E04005]: expected a single type
+   ┌─ tests/move_check/typing/assign_tuple.move:12:13
+   │
+ 7 │     fun tuple(x: u64): (u64, S) {
+   │                        -------- Expected a single type, but found expression list type: '(u64, 0x42::tuple_invalid::S)'
+   ·
+12 │         let x = tuple(x);
+   │             ^ Invalid type for local
+
diff --git a/third_party/move/move-compiler/tests/move_check/typing/assign_tuple.move b/third_party/move/move-compiler/tests/move_check/typing/assign_tuple.move
new file mode 100644
index 00000000000000..bcba65ad8363c8
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/typing/assign_tuple.move
@@ -0,0 +1,15 @@
+module 0x42::tuple_invalid {
+
+    struct S {
+        f: u64,
+    }
+
+    fun tuple(x: u64): (u64, S) {
+        (x, S{f: x + 1})
+    }
+
+    fun use_tuple1(x: u64): u64 {
+        let x = tuple(x);
+        1
+    }
+}
diff --git a/third_party/move/move-compiler/tests/move_check/typing/tuple.move b/third_party/move/move-compiler/tests/move_check/typing/tuple.move
new file mode 100644
index 00000000000000..ae3958d3b8e6c7
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/typing/tuple.move
@@ -0,0 +1,15 @@
+module 0x42::tuple {
+
+    struct S {
+        f: u64,
+    }
+
+    fun tuple(x: u64): (u64, S) {
+        (x, S{f: x + 1})
+    }
+
+    fun use_tuple(x: u64): u64 {
+        let (x, S{f: y}) = tuple(x);
+        x + y
+    }
+}
diff --git a/third_party/move/move-compiler/tests/move_check/unit_test/extra_attributes.move b/third_party/move/move-compiler/tests/move_check/unit_test/extra_attributes.move
index 33bf5eda301428..11ff5533c4f37a 100644
--- a/third_party/move/move-compiler/tests/move_check/unit_test/extra_attributes.move
+++ b/third_party/move/move-compiler/tests/move_check/unit_test/extra_attributes.move
@@ -23,5 +23,4 @@ module 0x1::m {
     #[test]
     #[expected_failure(major_status=4016, minor_code=0, location=Self)]
     fun t4() { }
-
 }
diff --git a/third_party/move/move-compiler/tests/move_check/unit_test/extra_attributes2.move b/third_party/move/move-compiler/tests/move_check/unit_test/extra_attributes2.move
new file mode 100644
index 00000000000000..ba09afd866987b
--- /dev/null
+++ b/third_party/move/move-compiler/tests/move_check/unit_test/extra_attributes2.move
@@ -0,0 +1,23 @@
+// tests non-abort related execution failures with errors in attributes
+module 0x1::n {}
+module 0x1::m {
+    #[test]
+    #[expected_failure(arithmetic_error, location=Self)]
+    fun t5() { }
+
+    #[test]
+    #[expected_failure(abort_code=3, test, location=Self)]
+    fun t6() { }
+
+    #[test]
+    #[expected_failure(vector_error, test_only, location=Self)]
+    fun t7() { }
+
+    #[test_only]
+    #[expected_failure(bytecode_instruction, location=Self)]
+    fun t8() { }
+
+    #[test]
+    #[expected_failure(verify_only)]
+    fun t9() { }
+}
diff --git a/third_party/move/tools/move-cli/tests/build_tests/dependency_chain/args.exp b/third_party/move/tools/move-cli/tests/build_tests/dependency_chain/args.exp
index ea1be9b5e0ceeb..46931d7174c7c7 100644
--- a/third_party/move/tools/move-cli/tests/build_tests/dependency_chain/args.exp
+++ b/third_party/move/tools/move-cli/tests/build_tests/dependency_chain/args.exp
@@ -2,3 +2,9 @@ Command `build -v`:
 INCLUDING DEPENDENCY Bar
 INCLUDING DEPENDENCY Foo
 BUILDING A
+warning[W02016]: unknown attribute
+  ┌─ ./sources/A.move:1:3
+  │
+1 │ #[evm_contract] // for passing evm test flavor
+  │   ^^^^^^^^^^^^ Attribute name 'evm_contract' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
diff --git a/third_party/move/tools/move-cli/tests/build_tests/dev_address/args.exp b/third_party/move/tools/move-cli/tests/build_tests/dev_address/args.exp
index fa89fc39cc0e82..6d43848bd756ef 100644
--- a/third_party/move/tools/move-cli/tests/build_tests/dev_address/args.exp
+++ b/third_party/move/tools/move-cli/tests/build_tests/dev_address/args.exp
@@ -1,2 +1,8 @@
 Command `build -v -d`:
 BUILDING A
+warning[W02016]: unknown attribute
+  ┌─ ./sources/A.move:1:3
+  │
+1 │ #[evm_contract] // for passing evm test flavor
+  │   ^^^^^^^^^^^^ Attribute name 'evm_contract' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
diff --git a/third_party/move/tools/move-cli/tests/build_tests/empty_module_no_deps/args.exp b/third_party/move/tools/move-cli/tests/build_tests/empty_module_no_deps/args.exp
index dffc3c3b344deb..981f783b212586 100644
--- a/third_party/move/tools/move-cli/tests/build_tests/empty_module_no_deps/args.exp
+++ b/third_party/move/tools/move-cli/tests/build_tests/empty_module_no_deps/args.exp
@@ -1,2 +1,8 @@
 Command `build -v`:
 BUILDING A
+warning[W02016]: unknown attribute
+  ┌─ ./sources/A.move:1:3
+  │
+1 │ #[evm_contract] // for passing evm test flavor
+  │   ^^^^^^^^^^^^ Attribute name 'evm_contract' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
diff --git a/third_party/move/tools/move-cli/tests/build_tests/include_exclude_stdlib/args.exp b/third_party/move/tools/move-cli/tests/build_tests/include_exclude_stdlib/args.exp
index ce37b1cf91b5a5..1d60e31b47be4f 100644
--- a/third_party/move/tools/move-cli/tests/build_tests/include_exclude_stdlib/args.exp
+++ b/third_party/move/tools/move-cli/tests/build_tests/include_exclude_stdlib/args.exp
@@ -1,5 +1,11 @@
 Command `build -v`:
 BUILDING build_include_exclude_stdlib
+warning[W02016]: unknown attribute
+  ┌─ ./sources/UseSigner.move:1:3
+  │
+1 │ #[evm_contract] // for passing evm test flavor
+  │   ^^^^^^^^^^^^ Attribute name 'evm_contract' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
 error[E03002]: unbound module
   ┌─ ./sources/UseSigner.move:3:7
   │
@@ -15,3 +21,9 @@ error[E03002]: unbound module
 Command `-d -v build`:
 INCLUDING DEPENDENCY MoveStdlib
 BUILDING build_include_exclude_stdlib
+warning[W02016]: unknown attribute
+  ┌─ ./sources/UseSigner.move:1:3
+  │
+1 │ #[evm_contract] // for passing evm test flavor
+  │   ^^^^^^^^^^^^ Attribute name 'evm_contract' is unknown (use --skip-attribute-checks CLI option to ignore); known attributes are '{"bytecode_instruction", "deprecated", "expected_failure", "native_interface", "test", "test_only", "verify_only"}'.
+
diff --git a/third_party/move/tools/move-cli/tests/build_tests/unbound_address/args.exp b/third_party/move/tools/move-cli/tests/build_tests/unbound_address/args.exp
index 47bf3e9d496172..46fb821f74f265 100644
--- a/third_party/move/tools/move-cli/tests/build_tests/unbound_address/args.exp
+++ b/third_party/move/tools/move-cli/tests/build_tests/unbound_address/args.exp
@@ -4,5 +4,5 @@ Named address 'A' in package 'A'
 ]
 To fix this, add an entry for each unresolved address to the [addresses] section of ./Move.toml: e.g.,
 [addresses]
-Std = "0x1"
+std = "0x1"
 Alternatively, you can also define [dev-addresses] and call with the --dev flag
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps/Move.exp
index cb5253d17487a7..a562ec60f64d49 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps/Move.exp
@@ -18,5 +18,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_address_assigned/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_address_assigned/Move.exp
index 6ee4f9b85807e8..785be46e0eaad6 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_address_assigned/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_address_assigned/Move.exp
@@ -20,5 +20,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_address_not_assigned_with_dev_assignment/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_address_not_assigned_with_dev_assignment/Move.exp
index 7a2e6343a15ebc..44424a468b45e5 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_address_not_assigned_with_dev_assignment/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_address_not_assigned_with_dev_assignment/Move.exp
@@ -20,5 +20,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_test_mode/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_test_mode/Move.exp
index 0f8b1e0a0d4a62..d679d645623a1c 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_test_mode/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/basic_no_deps_test_mode/Move.exp
@@ -20,5 +20,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/diamond_problem_backflow_resolution/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/diamond_problem_backflow_resolution/Move.exp
index fe3846c31a1fa6..e45c1031f3d498 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/diamond_problem_backflow_resolution/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/diamond_problem_backflow_resolution/Move.exp
@@ -21,5 +21,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/diamond_problem_no_conflict/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/diamond_problem_no_conflict/Move.exp
index fe3846c31a1fa6..e45c1031f3d498 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/diamond_problem_no_conflict/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/diamond_problem_no_conflict/Move.exp
@@ -21,5 +21,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/multiple_deps_rename/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/multiple_deps_rename/Move.exp
index da8ed9338db000..e18b4560e1d2ed 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/multiple_deps_rename/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/multiple_deps_rename/Move.exp
@@ -22,5 +22,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/multiple_deps_rename_one/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/multiple_deps_rename_one/Move.exp
index bb13331e51006d..2eee90247064cb 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/multiple_deps_rename_one/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/multiple_deps_rename_one/Move.exp
@@ -22,5 +22,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep/Move.exp
index 04d6d3c40e95a6..eb858ed34d65f1 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep/Move.exp
@@ -20,5 +20,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_assigned_address/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_assigned_address/Move.exp
index 5da411f35697c7..5ff2f16628f812 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_assigned_address/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_assigned_address/Move.exp
@@ -20,5 +20,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_renamed/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_renamed/Move.exp
index 04d6d3c40e95a6..eb858ed34d65f1 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_renamed/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_renamed/Move.exp
@@ -20,5 +20,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_with_scripts/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_with_scripts/Move.exp
index 04d6d3c40e95a6..eb858ed34d65f1 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_with_scripts/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/one_dep_with_scripts/Move.exp
@@ -20,5 +20,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/compilation/test_symlinks/Move.exp b/third_party/move/tools/move-package/tests/test_sources/compilation/test_symlinks/Move.exp
index 6ee4f9b85807e8..785be46e0eaad6 100644
--- a/third_party/move/tools/move-package/tests/test_sources/compilation/test_symlinks/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/compilation/test_symlinks/Move.exp
@@ -20,5 +20,7 @@ CompiledPackageInfo {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
 }
diff --git a/third_party/move/tools/move-package/tests/test_sources/parsing/invalid_identifier_package_name/Move.exp b/third_party/move/tools/move-package/tests/test_sources/parsing/invalid_identifier_package_name/Move.exp
index 21da7cb042776b..891d51523e3550 100644
--- a/third_party/move/tools/move-package/tests/test_sources/parsing/invalid_identifier_package_name/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/parsing/invalid_identifier_package_name/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/parsing/minimal_manifest/Move.exp b/third_party/move/tools/move-package/tests/test_sources/parsing/minimal_manifest/Move.exp
index 902cee9609a12a..d66c3ca089c6dd 100644
--- a/third_party/move/tools/move-package/tests/test_sources/parsing/minimal_manifest/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/parsing/minimal_manifest/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps/Move.exp
index 79e181224f8ba1..7868882c694508 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_assigned/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_assigned/Move.exp
index 2ab48f290b8c5e..af971a5488ef98 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_assigned/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_assigned/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_not_assigned/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_not_assigned/Move.exp
index 067d57d26ce134..286d76ea24d5ec 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_not_assigned/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_not_assigned/Move.exp
@@ -3,5 +3,5 @@ Named address 'A' in package 'test'
 ]
 To fix this, add an entry for each unresolved address to the [addresses] section of tests/test_sources/resolution/basic_no_deps_address_not_assigned/Move.toml: e.g.,
 [addresses]
-Std = "0x1"
+std = "0x1"
 Alternatively, you can also define [dev-addresses] and call with the --dev flag
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_not_assigned_with_dev_assignment/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_not_assigned_with_dev_assignment/Move.exp
index 93c1ba97cdf971..ade5b69d908461 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_not_assigned_with_dev_assignment/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/basic_no_deps_address_not_assigned_with_dev_assignment/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/dep_good_digest/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/dep_good_digest/Move.exp
index 1692ad324087ae..3e052a4a249280 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/dep_good_digest/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/dep_good_digest/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/diamond_problem_backflow_resolution/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/diamond_problem_backflow_resolution/Move.exp
index cf5e6e183c4b7e..ea59fd6ea93613 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/diamond_problem_backflow_resolution/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/diamond_problem_backflow_resolution/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/diamond_problem_no_conflict/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/diamond_problem_no_conflict/Move.exp
index a55b459854f19b..9ef82bdfb100b3 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/diamond_problem_no_conflict/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/diamond_problem_no_conflict/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/multiple_deps_rename/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/multiple_deps_rename/Move.exp
index 3e792236e464fb..9ec3d07405ed9d 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/multiple_deps_rename/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/multiple_deps_rename/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep/Move.exp
index 78e15d8a03c816..c283da45cf4c3b 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_assigned_address/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_assigned_address/Move.exp
index e1d4eaab354a6d..478aaa186c3523 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_assigned_address/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_assigned_address/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_multiple_of_same_name/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_multiple_of_same_name/Move.exp
index 0540c070119c5d..83b6075587743f 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_multiple_of_same_name/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_multiple_of_same_name/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_reassigned_address/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_reassigned_address/Move.exp
index a590010df9ff46..02416ca1cb7760 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_reassigned_address/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_reassigned_address/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {
diff --git a/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_unification_across_local_renamings/Move.exp b/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_unification_across_local_renamings/Move.exp
index 8dc604a4dc5975..9480595537c417 100644
--- a/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_unification_across_local_renamings/Move.exp
+++ b/third_party/move/tools/move-package/tests/test_sources/resolution/one_dep_unification_across_local_renamings/Move.exp
@@ -14,6 +14,8 @@ ResolutionGraph {
         fetch_deps_only: false,
         skip_fetch_latest_git_deps: false,
         bytecode_version: None,
+        known_attributes: {},
+        skip_attribute_checks: false,
     },
     root_package: SourceManifest {
         package: PackageInfo {