From 4d0ec0370796b609b30e5e5226f083a4a96c0551 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Tue, 6 Jun 2023 11:56:17 -0400 Subject: [PATCH 01/20] remove aliases for access pub, priv and pub(set) --- runtime/ast/access.go | 32 +- runtime/ast/attachment_test.go | 4 +- runtime/ast/composite_test.go | 28 +- runtime/ast/entitlement_declaration_test.go | 12 +- runtime/ast/function_declaration_test.go | 8 +- runtime/ast/interface_test.go | 10 +- runtime/ast/primitiveaccess_string.go | 9 +- runtime/ast/transaction_declaration_test.go | 4 +- runtime/ast/variable_declaration_test.go | 10 +- runtime/cmd/compile/main.go | 2 +- runtime/parser/declaration.go | 50 +-- runtime/parser/declaration_test.go | 178 ++------- runtime/parser/keyword.go | 7 - runtime/parser/type_test.go | 2 +- runtime/sema/access.go | 10 +- runtime/sema/accesscheckmode.go | 6 +- runtime/sema/check_assignment.go | 1 + runtime/sema/check_composite_declaration.go | 18 +- runtime/sema/check_function.go | 2 +- runtime/sema/check_import_declaration.go | 2 +- runtime/sema/checker.go | 43 +-- runtime/sema/errors.go | 5 +- runtime/sema/type.go | 10 +- runtime/sema/variable_activations.go | 8 +- runtime/tests/checker/access_test.go | 349 ++++++++---------- .../tests/checker/external_mutation_test.go | 18 +- 26 files changed, 299 insertions(+), 529 deletions(-) diff --git a/runtime/ast/access.go b/runtime/ast/access.go index 8110d88219..7b5b0b2383 100644 --- a/runtime/ast/access.go +++ b/runtime/ast/access.go @@ -140,7 +140,7 @@ func (e EntitlementAccess) subset(other EntitlementAccess) bool { func (e EntitlementAccess) IsLessPermissiveThan(other Access) bool { switch other := other.(type) { case PrimitiveAccess: - return other == AccessPublic || other == AccessPublicSettable + return other == AccessAll case EntitlementAccess: return e.subset(other) default: @@ -154,11 +154,10 @@ type PrimitiveAccess uint8 const ( AccessNotSpecified PrimitiveAccess = iota - AccessPrivate + AccessSelf AccessContract AccessAccount - AccessPublic - AccessPublicSettable + AccessAll ) func PrimitiveAccessCount() int { @@ -173,9 +172,8 @@ func (PrimitiveAccess) isAccess() {} var BasicAccesses = []PrimitiveAccess{ AccessNotSpecified, - AccessPrivate, - AccessPublic, - AccessPublicSettable, + AccessSelf, + AccessAll, } var AllAccesses = append(BasicAccesses[:], @@ -187,12 +185,10 @@ func (a PrimitiveAccess) Keyword() string { switch a { case AccessNotSpecified: return "" - case AccessPrivate: - return "priv" - case AccessPublic: - return "pub" - case AccessPublicSettable: - return "pub(set)" + case AccessSelf: + return "access(self)" + case AccessAll: + return "access(all)" case AccessAccount: return "access(account)" case AccessContract: @@ -206,12 +202,10 @@ func (a PrimitiveAccess) Description() string { switch a { case AccessNotSpecified: return "not specified" - case AccessPrivate: - return "private" - case AccessPublic: - return "public" - case AccessPublicSettable: - return "public settable" + case AccessSelf: + return "self" + case AccessAll: + return "all" case AccessAccount: return "account" case AccessContract: diff --git a/runtime/ast/attachment_test.go b/runtime/ast/attachment_test.go index da66f81c68..3cd03c84bf 100644 --- a/runtime/ast/attachment_test.go +++ b/runtime/ast/attachment_test.go @@ -32,7 +32,7 @@ func TestAttachmentDeclaration_MarshallJSON(t *testing.T) { t.Parallel() decl := &AttachmentDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: NewIdentifier( nil, "Foo", @@ -155,7 +155,7 @@ func TestAttachmentDeclaration_Doc(t *testing.T) { t.Parallel() decl := &AttachmentDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: NewIdentifier( nil, "Foo", diff --git a/runtime/ast/composite_test.go b/runtime/ast/composite_test.go index 9ed1a604ef..a14e03190e 100644 --- a/runtime/ast/composite_test.go +++ b/runtime/ast/composite_test.go @@ -34,7 +34,7 @@ func TestFieldDeclaration_MarshalJSON(t *testing.T) { t.Parallel() decl := &FieldDeclaration{ - Access: AccessPublic, + Access: AccessAll, Flags: FieldDeclarationFlagsIsStatic | FieldDeclarationFlagsIsNative, VariableKind: VariableKindConstant, Identifier: Identifier{ @@ -108,7 +108,7 @@ func TestFieldDeclaration_Doc(t *testing.T) { t.Parallel() decl := &FieldDeclaration{ - Access: AccessPublic, + Access: AccessAll, VariableKind: VariableKindConstant, Flags: FieldDeclarationFlagsIsNative | FieldDeclarationFlagsIsStatic, Identifier: Identifier{ @@ -199,7 +199,7 @@ func TestFieldDeclaration_Doc(t *testing.T) { t.Parallel() decl := &FieldDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: Identifier{ Identifier: "xyz", }, @@ -281,7 +281,7 @@ func TestFieldDeclaration_String(t *testing.T) { t.Parallel() decl := &FieldDeclaration{ - Access: AccessPublic, + Access: AccessAll, VariableKind: VariableKindConstant, Identifier: Identifier{ Identifier: "xyz", @@ -335,7 +335,7 @@ func TestFieldDeclaration_String(t *testing.T) { t.Parallel() decl := &FieldDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: Identifier{ Identifier: "xyz", }, @@ -390,7 +390,7 @@ func TestCompositeDeclaration_MarshalJSON(t *testing.T) { t.Parallel() decl := &CompositeDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindResource, Identifier: Identifier{ Identifier: "AB", @@ -460,7 +460,7 @@ func TestCompositeDeclaration_Doc(t *testing.T) { t.Parallel() decl := &CompositeDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindResource, Identifier: Identifier{ Identifier: "AB", @@ -518,7 +518,7 @@ func TestCompositeDeclaration_Doc(t *testing.T) { t.Parallel() decl := &CompositeDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindResource, Identifier: Identifier{ Identifier: "AB", @@ -606,7 +606,7 @@ func TestCompositeDeclaration_Doc(t *testing.T) { t.Parallel() decl := &CompositeDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindEvent, Identifier: Identifier{ Identifier: "AB", @@ -668,7 +668,7 @@ func TestCompositeDeclaration_Doc(t *testing.T) { t.Parallel() decl := &CompositeDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindEnum, Identifier: Identifier{ Identifier: "AB", @@ -741,7 +741,7 @@ func TestCompositeDeclaration_String(t *testing.T) { t.Parallel() decl := &CompositeDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindResource, Identifier: Identifier{ Identifier: "AB", @@ -773,7 +773,7 @@ func TestCompositeDeclaration_String(t *testing.T) { t.Parallel() decl := &CompositeDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindResource, Identifier: Identifier{ Identifier: "AB", @@ -821,7 +821,7 @@ func TestCompositeDeclaration_String(t *testing.T) { t.Parallel() decl := &CompositeDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindEvent, Identifier: Identifier{ Identifier: "AB", @@ -860,7 +860,7 @@ func TestCompositeDeclaration_String(t *testing.T) { t.Parallel() decl := &CompositeDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindEnum, Identifier: Identifier{ Identifier: "AB", diff --git a/runtime/ast/entitlement_declaration_test.go b/runtime/ast/entitlement_declaration_test.go index 9c648204b2..39ebc9651b 100644 --- a/runtime/ast/entitlement_declaration_test.go +++ b/runtime/ast/entitlement_declaration_test.go @@ -32,7 +32,7 @@ func TestEntitlementDeclaration_MarshalJSON(t *testing.T) { t.Parallel() decl := &EntitlementDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: Identifier{ Identifier: "AB", Pos: Position{Offset: 1, Line: 2, Column: 3}, @@ -76,7 +76,7 @@ func TestEntitlementDeclaration_Doc(t *testing.T) { t.Parallel() decl := &EntitlementDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: Identifier{ Identifier: "AB", }, @@ -105,7 +105,7 @@ func TestEntitlementDeclaration_String(t *testing.T) { t.Parallel() decl := &EntitlementDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: Identifier{ Identifier: "AB", }, @@ -125,7 +125,7 @@ func TestEntitlementMappingDeclaration_MarshalJSON(t *testing.T) { t.Parallel() decl := &EntitlementMappingDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: Identifier{ Identifier: "AB", Pos: Position{Offset: 1, Line: 2, Column: 3}, @@ -205,7 +205,7 @@ func TestEntitlementMappingDeclaration_Doc(t *testing.T) { t.Parallel() decl := &EntitlementMappingDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: Identifier{ Identifier: "AB", Pos: Position{Offset: 1, Line: 2, Column: 3}, @@ -266,7 +266,7 @@ func TestEntitlementMappingDeclaration_String(t *testing.T) { t.Parallel() decl := &EntitlementMappingDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: Identifier{ Identifier: "AB", Pos: Position{Offset: 1, Line: 2, Column: 3}, diff --git a/runtime/ast/function_declaration_test.go b/runtime/ast/function_declaration_test.go index ec6022e719..3c4078b70a 100644 --- a/runtime/ast/function_declaration_test.go +++ b/runtime/ast/function_declaration_test.go @@ -34,7 +34,7 @@ func TestFunctionDeclaration_MarshalJSON(t *testing.T) { t.Parallel() decl := &FunctionDeclaration{ - Access: AccessPublic, + Access: AccessAll, Flags: FunctionDeclarationFlagsIsStatic | FunctionDeclarationFlagsIsNative, Identifier: Identifier{ Identifier: "xyz", @@ -289,7 +289,7 @@ func TestFunctionDeclaration_Doc(t *testing.T) { t.Parallel() decl := &FunctionDeclaration{ - Access: AccessPublic, + Access: AccessAll, Purity: FunctionPurityView, Flags: FunctionDeclarationFlagsIsStatic | FunctionDeclarationFlagsIsNative, Identifier: Identifier{ @@ -383,7 +383,7 @@ func TestFunctionDeclaration_String(t *testing.T) { t.Parallel() decl := &FunctionDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: Identifier{ Identifier: "xyz", }, @@ -430,7 +430,7 @@ func TestFunctionDeclaration_String(t *testing.T) { t.Parallel() decl := &FunctionDeclaration{ - Access: AccessPublic, + Access: AccessAll, Identifier: Identifier{ Identifier: "xyz", }, diff --git a/runtime/ast/interface_test.go b/runtime/ast/interface_test.go index 8714d5e457..3d9ad2f986 100644 --- a/runtime/ast/interface_test.go +++ b/runtime/ast/interface_test.go @@ -34,7 +34,7 @@ func TestInterfaceDeclaration_MarshalJSON(t *testing.T) { t.Parallel() decl := &InterfaceDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindResource, Identifier: Identifier{ Identifier: "AB", @@ -84,7 +84,7 @@ func TestInterfaceDeclaration_Doc(t *testing.T) { t.Parallel() decl := &InterfaceDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindResource, Identifier: Identifier{ Identifier: "AB", @@ -114,7 +114,7 @@ func TestInterfaceDeclaration_Doc(t *testing.T) { t.Parallel() decl := &InterfaceDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindResource, Identifier: Identifier{ Identifier: "AB", @@ -179,7 +179,7 @@ func TestInterfaceDeclaration_String(t *testing.T) { t.Parallel() decl := &InterfaceDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindResource, Identifier: Identifier{ Identifier: "AB", @@ -200,7 +200,7 @@ func TestInterfaceDeclaration_String(t *testing.T) { t.Parallel() decl := &InterfaceDeclaration{ - Access: AccessPublic, + Access: AccessAll, CompositeKind: common.CompositeKindResource, Identifier: Identifier{ Identifier: "AB", diff --git a/runtime/ast/primitiveaccess_string.go b/runtime/ast/primitiveaccess_string.go index 447c8aea17..40ebd6decd 100644 --- a/runtime/ast/primitiveaccess_string.go +++ b/runtime/ast/primitiveaccess_string.go @@ -9,16 +9,15 @@ func _() { // Re-run the stringer command to generate them again. var x [1]struct{} _ = x[AccessNotSpecified-0] - _ = x[AccessPrivate-1] + _ = x[AccessSelf-1] _ = x[AccessContract-2] _ = x[AccessAccount-3] - _ = x[AccessPublic-4] - _ = x[AccessPublicSettable-5] + _ = x[AccessAll-4] } -const _PrimitiveAccess_name = "AccessNotSpecifiedAccessPrivateAccessContractAccessAccountAccessPublicAccessPublicSettable" +const _PrimitiveAccess_name = "AccessNotSpecifiedAccessSelfAccessContractAccessAccountAccessAll" -var _PrimitiveAccess_index = [...]uint8{0, 18, 31, 45, 58, 70, 90} +var _PrimitiveAccess_index = [...]uint8{0, 18, 28, 42, 55, 64} func (i PrimitiveAccess) String() string { if i >= PrimitiveAccess(len(_PrimitiveAccess_index)-1) { diff --git a/runtime/ast/transaction_declaration_test.go b/runtime/ast/transaction_declaration_test.go index c1987d6683..5c4e83506c 100644 --- a/runtime/ast/transaction_declaration_test.go +++ b/runtime/ast/transaction_declaration_test.go @@ -103,7 +103,7 @@ func TestTransactionDeclaration_Doc(t *testing.T) { }, Fields: []*FieldDeclaration{ { - Access: AccessPublic, + Access: AccessAll, VariableKind: VariableKindConstant, Identifier: Identifier{ Identifier: "f", @@ -367,7 +367,7 @@ func TestTransactionDeclaration_String(t *testing.T) { }, Fields: []*FieldDeclaration{ { - Access: AccessPublic, + Access: AccessAll, VariableKind: VariableKindConstant, Identifier: Identifier{ Identifier: "f", diff --git a/runtime/ast/variable_declaration_test.go b/runtime/ast/variable_declaration_test.go index 9f77168ccf..767396d5f3 100644 --- a/runtime/ast/variable_declaration_test.go +++ b/runtime/ast/variable_declaration_test.go @@ -32,7 +32,7 @@ func TestVariableDeclaration_MarshalJSON(t *testing.T) { t.Parallel() decl := &VariableDeclaration{ - Access: AccessPublic, + Access: AccessAll, IsConstant: true, Identifier: Identifier{ Identifier: "foo", @@ -146,7 +146,7 @@ func TestVariableDeclaration_Doc(t *testing.T) { t.Parallel() decl := &VariableDeclaration{ - Access: AccessPublic, + Access: AccessAll, IsConstant: true, Identifier: Identifier{ Identifier: "foo", @@ -209,7 +209,7 @@ func TestVariableDeclaration_Doc(t *testing.T) { t.Parallel() decl := &VariableDeclaration{ - Access: AccessPublic, + Access: AccessAll, IsConstant: true, Identifier: Identifier{ Identifier: "foo", @@ -287,7 +287,7 @@ func TestVariableDeclaration_String(t *testing.T) { t.Parallel() decl := &VariableDeclaration{ - Access: AccessPublic, + Access: AccessAll, IsConstant: true, Identifier: Identifier{ Identifier: "foo", @@ -319,7 +319,7 @@ func TestVariableDeclaration_String(t *testing.T) { t.Parallel() decl := &VariableDeclaration{ - Access: AccessPublic, + Access: AccessAll, IsConstant: true, Identifier: Identifier{ Identifier: "foo", diff --git a/runtime/cmd/compile/main.go b/runtime/cmd/compile/main.go index 252d1b1977..52e8a4be71 100644 --- a/runtime/cmd/compile/main.go +++ b/runtime/cmd/compile/main.go @@ -67,7 +67,7 @@ func main() { // Export all public functions for i, functionDeclaration := range functionDeclarations { - if functionDeclaration.Access != ast.AccessPublic { + if functionDeclaration.Access != ast.AccessAll { continue } diff --git a/runtime/parser/declaration.go b/runtime/parser/declaration.go index 838d24b88f..849fbf45a4 100644 --- a/runtime/parser/declaration.go +++ b/runtime/parser/declaration.go @@ -214,7 +214,7 @@ func parseDeclaration(p *parser, docString string) (ast.Declaration, error) { purity = parsePurityAnnotation(p) continue - case KeywordPriv, KeywordPub, KeywordAccess: + case KeywordAccess: if access != ast.AccessNotSpecified { return nil, p.syntaxError("invalid second access modifier") } @@ -333,48 +333,6 @@ func parseEntitlementList(p *parser) (ast.EntitlementSet, error) { func parseAccess(p *parser) (ast.Access, error) { switch string(p.currentTokenSource()) { - case KeywordPriv: - // Skip the `priv` keyword - p.next() - return ast.AccessPrivate, nil - - case KeywordPub: - // Skip the `pub` keyword - p.nextSemanticToken() - if !p.current.Is(lexer.TokenParenOpen) { - return ast.AccessPublic, nil - } - - // Skip the opening paren - p.nextSemanticToken() - - if !p.current.Is(lexer.TokenIdentifier) { - return ast.AccessNotSpecified, p.syntaxError( - "expected keyword %q, got %s", - KeywordSet, - p.current.Type, - ) - } - - keyword := p.currentTokenSource() - if string(keyword) != KeywordSet { - return ast.AccessNotSpecified, p.syntaxError( - "expected keyword %q, got %q", - KeywordSet, - keyword, - ) - } - - // Skip the `set` keyword - p.nextSemanticToken() - - _, err := p.mustOne(lexer.TokenParenClose) - if err != nil { - return ast.AccessNotSpecified, err - } - - return ast.AccessPublicSettable, nil - case KeywordAccess: // Skip the `access` keyword p.nextSemanticToken() @@ -399,7 +357,7 @@ func parseAccess(p *parser) (ast.Access, error) { keyword := p.currentTokenSource() switch string(keyword) { case KeywordAll: - access = ast.AccessPublic + access = ast.AccessAll // Skip the keyword p.nextSemanticToken() @@ -414,7 +372,7 @@ func parseAccess(p *parser) (ast.Access, error) { p.nextSemanticToken() case KeywordSelf: - access = ast.AccessPrivate + access = ast.AccessSelf // Skip the keyword p.nextSemanticToken() @@ -1667,7 +1625,7 @@ func parseMemberOrNestedDeclaration(p *parser, docString string) (ast.Declaratio purity = parsePurityAnnotation(p) continue - case KeywordPriv, KeywordPub, KeywordAccess: + case KeywordAccess: if access != ast.AccessNotSpecified { return nil, p.syntaxError("invalid second access modifier") } diff --git a/runtime/parser/declaration_test.go b/runtime/parser/declaration_test.go index ea0dda2bc8..e3a55a29e6 100644 --- a/runtime/parser/declaration_test.go +++ b/runtime/parser/declaration_test.go @@ -82,7 +82,7 @@ func TestParseVariableDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.VariableDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, IsConstant: false, Identifier: ast.Identifier{ Identifier: "x", @@ -608,7 +608,7 @@ func TestParseFunctionDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.FunctionDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "foo", Pos: ast.Position{Line: 1, Column: 8, Offset: 8}, @@ -1290,7 +1290,7 @@ func TestParseFunctionDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.FunctionDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Flags: ast.FunctionDeclarationFlagsIsStatic | ast.FunctionDeclarationFlagsIsNative, Identifier: ast.Identifier{ Identifier: "foo", @@ -1591,108 +1591,6 @@ func TestParseAccess(t *testing.T) { ) } - t.Run("pub", func(t *testing.T) { - - t.Parallel() - - result, errs := parse("pub") - require.Empty(t, errs) - - utils.AssertEqualWithDiff(t, - ast.AccessPublic, - result, - ) - }) - - t.Run("pub(set)", func(t *testing.T) { - - t.Parallel() - - result, errs := parse("pub ( set )") - require.Empty(t, errs) - - utils.AssertEqualWithDiff(t, - ast.AccessPublicSettable, - result, - ) - }) - - t.Run("pub, missing set keyword", func(t *testing.T) { - - t.Parallel() - - result, errs := parse("pub ( ") - utils.AssertEqualWithDiff(t, - []error{ - &SyntaxError{ - Message: "expected keyword \"set\", got EOF", - Pos: ast.Position{Offset: 6, Line: 1, Column: 6}, - }, - }, - errs, - ) - - utils.AssertEqualWithDiff(t, - ast.AccessNotSpecified, - result, - ) - }) - - t.Run("pub, missing closing paren", func(t *testing.T) { - - t.Parallel() - - result, errs := parse("pub ( set ") - utils.AssertEqualWithDiff(t, - []error{ - &SyntaxError{ - Message: "expected token ')'", - Pos: ast.Position{Offset: 10, Line: 1, Column: 10}, - }, - }, - errs, - ) - - utils.AssertEqualWithDiff(t, - ast.AccessNotSpecified, - result, - ) - }) - - t.Run("pub, invalid inner keyword", func(t *testing.T) { - - t.Parallel() - - result, errs := parse("pub ( foo )") - utils.AssertEqualWithDiff(t, - []error{ - &SyntaxError{ - Message: "expected keyword \"set\", got \"foo\"", - Pos: ast.Position{Offset: 6, Line: 1, Column: 6}, - }, - }, - errs, - ) - - utils.AssertEqualWithDiff(t, - ast.AccessNotSpecified, - result, - ) - }) - - t.Run("priv", func(t *testing.T) { - - t.Parallel() - - result, errs := parse("priv") - require.Empty(t, errs) - - utils.AssertEqualWithDiff(t, - ast.AccessPrivate, - result, - ) - }) - t.Run("access(all)", func(t *testing.T) { t.Parallel() @@ -1701,7 +1599,7 @@ func TestParseAccess(t *testing.T) { require.Empty(t, errs) utils.AssertEqualWithDiff(t, - ast.AccessPublic, + ast.AccessAll, result, ) }) @@ -1740,7 +1638,7 @@ func TestParseAccess(t *testing.T) { require.Empty(t, errs) utils.AssertEqualWithDiff(t, - ast.AccessPrivate, + ast.AccessSelf, result, ) }) @@ -2463,7 +2361,7 @@ func TestParseEvent(t *testing.T) { []ast.Declaration{ &ast.CompositeDeclaration{ - Access: ast.AccessPrivate, + Access: ast.AccessSelf, CompositeKind: common.CompositeKindEvent, Identifier: ast.Identifier{ Identifier: "E2", @@ -2865,7 +2763,7 @@ func TestParseField(t *testing.T) { utils.AssertEqualWithDiff(t, &ast.FieldDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Flags: ast.FieldDeclarationFlagsIsStatic | ast.FieldDeclarationFlagsIsNative, VariableKind: ast.VariableKindConstant, Identifier: ast.Identifier{ @@ -2923,7 +2821,7 @@ func TestParseCompositeDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.CompositeDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, CompositeKind: common.CompositeKindStructure, Identifier: ast.Identifier{ Identifier: "S", @@ -2950,7 +2848,7 @@ func TestParseCompositeDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.CompositeDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, CompositeKind: common.CompositeKindResource, Identifier: ast.Identifier{ Identifier: "R", @@ -2981,7 +2879,7 @@ func TestParseCompositeDeclaration(t *testing.T) { result, errs := testParseDeclarations(` struct Test { - pub(set) var foo: Int + pub var foo: Int init(foo: Int) { self.foo = foo @@ -3007,7 +2905,7 @@ func TestParseCompositeDeclaration(t *testing.T) { Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.FieldDeclaration{ - Access: ast.AccessPublicSettable, + Access: ast.AccessAll, VariableKind: ast.VariableKindVariable, Identifier: ast.Identifier{ Identifier: "foo", @@ -3101,7 +2999,7 @@ func TestParseCompositeDeclaration(t *testing.T) { }, }, &ast.FunctionDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "getFoo", Pos: ast.Position{Offset: 165, Line: 9, Column: 22}, @@ -3388,7 +3286,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.AttachmentDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, @@ -3436,7 +3334,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.AttachmentDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", Pos: ast.Position{Line: 3, Column: 18, Offset: 37}, @@ -3487,7 +3385,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.AttachmentDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, @@ -3529,7 +3427,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.AttachmentDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, @@ -3574,7 +3472,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { t.Parallel() result, errs := testParseDeclarations(`pub attachment E for S { - pub(set) var foo: Int + pub var foo: Int init() {} destroy() {} pub fun getFoo(): Int {} @@ -3584,7 +3482,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.AttachmentDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, @@ -3598,7 +3496,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.FieldDeclaration{ - Access: ast.AccessPublicSettable, + Access: ast.AccessAll, VariableKind: ast.VariableKindVariable, Identifier: ast.Identifier{ Identifier: "foo", @@ -3670,7 +3568,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { }, }, &ast.FunctionDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "getFoo", Pos: ast.Position{Offset: 90, Line: 5, Column: 11}, @@ -3727,7 +3625,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.AttachmentDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, @@ -3855,7 +3753,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.AttachmentDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, @@ -3928,7 +3826,7 @@ func TestParseInterfaceDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.InterfaceDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, CompositeKind: common.CompositeKindStructure, Identifier: ast.Identifier{ Identifier: "S", @@ -3974,7 +3872,7 @@ func TestParseInterfaceDeclaration(t *testing.T) { result, errs := testParseDeclarations(` struct interface Test { - pub(set) var foo: Int + pub var foo: Int init(foo: Int) @@ -4000,7 +3898,7 @@ func TestParseInterfaceDeclaration(t *testing.T) { Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.FieldDeclaration{ - Access: ast.AccessPublicSettable, + Access: ast.AccessAll, VariableKind: ast.VariableKindVariable, Identifier: ast.Identifier{ Identifier: "foo", @@ -4059,7 +3957,7 @@ func TestParseInterfaceDeclaration(t *testing.T) { }, }, &ast.FunctionDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "getFoo", Pos: ast.Position{Offset: 124, Line: 7, Column: 22}, @@ -4083,7 +3981,7 @@ func TestParseInterfaceDeclaration(t *testing.T) { StartPos: ast.Position{Offset: 116, Line: 7, Column: 14}, }, &ast.FunctionDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "getBar", Pos: ast.Position{Offset: 161, Line: 9, Column: 22}, @@ -4230,7 +4128,7 @@ func TestParseEnumDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.CompositeDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, CompositeKind: common.CompositeKindEnum, Identifier: ast.Identifier{ Identifier: "E", @@ -4247,7 +4145,7 @@ func TestParseEnumDeclaration(t *testing.T) { StartPos: ast.Position{Line: 1, Column: 14, Offset: 14}, }, &ast.EnumCaseDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "d", Pos: ast.Position{Line: 1, Column: 32, Offset: 32}, @@ -5283,7 +5181,7 @@ func TestParseStructure(t *testing.T) { const code = ` struct Test { - pub(set) var foo: Int + pub var foo: Int init(foo: Int) { self.foo = foo @@ -5309,7 +5207,7 @@ func TestParseStructure(t *testing.T) { Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.FieldDeclaration{ - Access: ast.AccessPublicSettable, + Access: ast.AccessAll, VariableKind: ast.VariableKindVariable, Identifier: ast.Identifier{ Identifier: "foo", @@ -5403,7 +5301,7 @@ func TestParseStructure(t *testing.T) { }, }, &ast.FunctionDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "getFoo", Pos: ast.Position{Offset: 153, Line: 9, Column: 20}, @@ -7914,7 +7812,7 @@ func TestParseEntitlementDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.EntitlementDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", Pos: ast.Position{Line: 1, Column: 17, Offset: 17}, @@ -7945,7 +7843,7 @@ func TestParseEntitlementDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.CompositeDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, CompositeKind: common.CompositeKindContract, Identifier: ast.Identifier{ Identifier: "C", @@ -7958,7 +7856,7 @@ func TestParseEntitlementDeclaration(t *testing.T) { Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.EntitlementDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", Pos: ast.Position{Line: 3, Column: 32, Offset: 63}, @@ -8250,7 +8148,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.EntitlementMappingDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "M", Pos: ast.Position{Line: 1, Column: 25, Offset: 25}, @@ -8278,7 +8176,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.EntitlementMappingDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "M", Pos: ast.Position{Line: 1, Column: 25, Offset: 25}, @@ -8335,7 +8233,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.EntitlementMappingDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "M", Pos: ast.Position{Line: 1, Column: 25, Offset: 25}, diff --git a/runtime/parser/keyword.go b/runtime/parser/keyword.go index 4a4316c9c6..d8b00ba1af 100644 --- a/runtime/parser/keyword.go +++ b/runtime/parser/keyword.go @@ -41,10 +41,7 @@ const ( KeywordIn = "in" KeywordEmit = "emit" KeywordAuth = "auth" - KeywordPriv = "priv" - KeywordPub = "pub" KeywordAccess = "access" - KeywordSet = "set" KeywordAll = "all" KeywordSelf = "self" KeywordInit = "init" @@ -99,10 +96,7 @@ var allKeywords = []string{ KeywordIn, KeywordEmit, KeywordAuth, - KeywordPriv, - KeywordPub, KeywordAccess, - KeywordSet, KeywordAll, KeywordSelf, KeywordInit, @@ -132,7 +126,6 @@ var allKeywords = []string{ var softKeywords = []string{ KeywordFrom, KeywordAccount, - KeywordSet, KeywordAll, KeywordView, } diff --git a/runtime/parser/type_test.go b/runtime/parser/type_test.go index 18dcacd86f..c94c9bcb3f 100644 --- a/runtime/parser/type_test.go +++ b/runtime/parser/type_test.go @@ -1517,7 +1517,7 @@ func TestParseParametersAndArrayTypes(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.FunctionDeclaration{ - Access: ast.AccessPublic, + Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "test", Pos: ast.Position{Offset: 11, Line: 2, Column: 10}, diff --git a/runtime/sema/access.go b/runtime/sema/access.go index b39e88f2df..9d90334f85 100644 --- a/runtime/sema/access.go +++ b/runtime/sema/access.go @@ -116,7 +116,7 @@ func (e EntitlementSetAccess) Equal(other Access) bool { func (e EntitlementSetAccess) PermitsAccess(other Access) bool { switch otherAccess := other.(type) { case PrimitiveAccess: - return otherAccess == PrimitiveAccess(ast.AccessPrivate) + return otherAccess == PrimitiveAccess(ast.AccessSelf) case EntitlementSetAccess: switch otherAccess.SetKind { case Disjunction: @@ -180,7 +180,7 @@ func (e EntitlementSetAccess) PermitsAccess(other Access) bool { func (e EntitlementSetAccess) IsLessPermissiveThan(other Access) bool { switch otherAccess := other.(type) { case PrimitiveAccess: - return ast.PrimitiveAccess(otherAccess) != ast.AccessPrivate + return ast.PrimitiveAccess(otherAccess) != ast.AccessSelf case EntitlementSetAccess: // subset check returns true on equality, and we want this function to be false on equality, so invert the >= check return !e.PermitsAccess(otherAccess) @@ -234,7 +234,7 @@ func (e EntitlementMapAccess) Equal(other Access) bool { func (e EntitlementMapAccess) PermitsAccess(other Access) bool { switch otherAccess := other.(type) { case PrimitiveAccess: - return otherAccess == PrimitiveAccess(ast.AccessPrivate) + return otherAccess == PrimitiveAccess(ast.AccessSelf) case EntitlementMapAccess: return e.Type.Equal(otherAccess.Type) // if we are initializing a field that was declared with an entitlement-mapped reference type, @@ -271,7 +271,7 @@ func (e EntitlementMapAccess) PermitsAccess(other Access) bool { func (e EntitlementMapAccess) IsLessPermissiveThan(other Access) bool { switch otherAccess := other.(type) { case PrimitiveAccess: - return ast.PrimitiveAccess(otherAccess) != ast.AccessPrivate + return ast.PrimitiveAccess(otherAccess) != ast.AccessSelf case EntitlementMapAccess: // this should be false on equality return !e.Type.Equal(otherAccess.Type) @@ -407,5 +407,5 @@ func (a PrimitiveAccess) PermitsAccess(otherAccess Access) bool { return ast.PrimitiveAccess(a) >= ast.PrimitiveAccess(otherPrimitive) } // only priv access is guaranteed to be less permissive than entitlement-based access, but cannot appear in interfaces - return ast.PrimitiveAccess(a) != ast.AccessPrivate + return ast.PrimitiveAccess(a) != ast.AccessSelf } diff --git a/runtime/sema/accesscheckmode.go b/runtime/sema/accesscheckmode.go index 32c8683641..a0bb313b6f 100644 --- a/runtime/sema/accesscheckmode.go +++ b/runtime/sema/accesscheckmode.go @@ -74,13 +74,11 @@ func (mode AccessCheckMode) IsWriteableAccess(access Access) bool { switch mode { case AccessCheckModeStrict, AccessCheckModeNotSpecifiedRestricted: - - return access.PermitsAccess(PrimitiveAccess(ast.AccessPublicSettable)) + return false case AccessCheckModeNotSpecifiedUnrestricted: - return access == PrimitiveAccess(ast.AccessNotSpecified) || - access.PermitsAccess(PrimitiveAccess(ast.AccessPublicSettable)) + return access == PrimitiveAccess(ast.AccessNotSpecified) case AccessCheckModeNone: return true diff --git a/runtime/sema/check_assignment.go b/runtime/sema/check_assignment.go index c2c854a465..d64705691e 100644 --- a/runtime/sema/check_assignment.go +++ b/runtime/sema/check_assignment.go @@ -364,6 +364,7 @@ func (checker *Checker) visitMemberExpressionAssignment( checker.report( &InvalidAssignmentAccessError{ Name: member.Identifier.Identifier, + ContainerType: member.ContainerType, RestrictingAccess: member.Access, DeclarationKind: member.DeclarationKind, Range: ast.NewRangeFromPositioned(checker.memoryGauge, target.Identifier), diff --git a/runtime/sema/check_composite_declaration.go b/runtime/sema/check_composite_declaration.go index 5527fb7de5..8f257ec09c 100644 --- a/runtime/sema/check_composite_declaration.go +++ b/runtime/sema/check_composite_declaration.go @@ -1059,7 +1059,7 @@ func (checker *Checker) declareContractValue( ty: compositeType, docString: declaration.DocString, // NOTE: contracts are always public - access: PrimitiveAccess(ast.AccessPublic), + access: PrimitiveAccess(ast.AccessAll), kind: common.DeclarationKindContract, pos: declaration.Identifier.Pos, isConstant: true, @@ -1104,7 +1104,7 @@ func (checker *Checker) declareEnumConstructor( &Member{ ContainerType: constructorType, // enum cases are always public - Access: PrimitiveAccess(ast.AccessPublic), + Access: PrimitiveAccess(ast.AccessAll), Identifier: enumCase.Identifier, TypeAnnotation: memberCaseTypeAnnotation, DeclarationKind: common.DeclarationKindField, @@ -1131,7 +1131,7 @@ func (checker *Checker) declareEnumConstructor( ty: constructorType, docString: declaration.DocString, // NOTE: enums are always public - access: PrimitiveAccess(ast.AccessPublic), + access: PrimitiveAccess(ast.AccessAll), kind: common.DeclarationKindEnum, pos: declaration.Identifier.Pos, isConstant: true, @@ -1899,7 +1899,7 @@ func (checker *Checker) defaultMembersAndOrigins( effectiveAccess := checker.effectiveMemberAccess(fieldAccess, containerKind) if requireNonPrivateMemberAccess && - effectiveAccess.Equal(PrimitiveAccess(ast.AccessPrivate)) { + effectiveAccess.Equal(PrimitiveAccess(ast.AccessSelf)) { checker.report( &InvalidAccessModifierError{ @@ -1970,7 +1970,7 @@ func (checker *Checker) defaultMembersAndOrigins( effectiveAccess := checker.effectiveMemberAccess(functionAccess, containerKind) if requireNonPrivateMemberAccess && - effectiveAccess.Equal(PrimitiveAccess(ast.AccessPrivate)) { + effectiveAccess.Equal(PrimitiveAccess(ast.AccessSelf)) { checker.report( &InvalidAccessModifierError{ @@ -2033,7 +2033,7 @@ func (checker *Checker) eventMembersAndOrigins( identifier.Identifier, &Member{ ContainerType: containerType, - Access: PrimitiveAccess(ast.AccessPublic), + Access: PrimitiveAccess(ast.AccessAll), Identifier: identifier, DeclarationKind: common.DeclarationKindField, TypeAnnotation: typeAnnotation, @@ -2085,7 +2085,7 @@ func (checker *Checker) enumMembersAndOrigins( // Enum cases must be effectively public enumAccess := checker.accessFromAstAccess(enumCase.Access) - if !checker.effectiveCompositeMemberAccess(enumAccess).Equal(PrimitiveAccess(ast.AccessPublic)) { + if !checker.effectiveCompositeMemberAccess(enumAccess).Equal(PrimitiveAccess(ast.AccessAll)) { checker.report( &InvalidAccessModifierError{ DeclarationKind: enumCase.DeclarationKind(), @@ -2106,7 +2106,7 @@ func (checker *Checker) enumMembersAndOrigins( EnumRawValueFieldName, &Member{ ContainerType: containerType, - Access: PrimitiveAccess(ast.AccessPublic), + Access: PrimitiveAccess(ast.AccessAll), Identifier: ast.NewIdentifier( checker.memoryGauge, EnumRawValueFieldName, @@ -2337,7 +2337,7 @@ func (checker *Checker) declareLowerScopedValue( variable := &Variable{ Identifier: identifier, - Access: PrimitiveAccess(ast.AccessPublic), + Access: PrimitiveAccess(ast.AccessAll), DeclarationKind: kind, Type: ty, IsConstant: true, diff --git a/runtime/sema/check_function.go b/runtime/sema/check_function.go index 0b41506ab7..456f02cc95 100644 --- a/runtime/sema/check_function.go +++ b/runtime/sema/check_function.go @@ -316,7 +316,7 @@ func (checker *Checker) declareParameters( variable := &Variable{ Identifier: identifier.Identifier, - Access: PrimitiveAccess(ast.AccessPublic), + Access: PrimitiveAccess(ast.AccessAll), DeclarationKind: common.DeclarationKindParameter, IsConstant: true, Type: parameterType, diff --git a/runtime/sema/check_import_declaration.go b/runtime/sema/check_import_declaration.go index 912c0dbf74..91253db06c 100644 --- a/runtime/sema/check_import_declaration.go +++ b/runtime/sema/check_import_declaration.go @@ -246,7 +246,7 @@ func (checker *Checker) handleMissingImports(missing []ast.Identifier, available ) // NOTE: declare constant variable with invalid type to silence rest of program - const access = PrimitiveAccess(ast.AccessPrivate) + const access = PrimitiveAccess(ast.AccessSelf) _, err := checker.valueActivations.declare(variableDeclaration{ identifier: identifier.Identifier, diff --git a/runtime/sema/checker.go b/runtime/sema/checker.go index da51decb55..76827effeb 100644 --- a/runtime/sema/checker.go +++ b/runtime/sema/checker.go @@ -1806,30 +1806,7 @@ func (checker *Checker) checkDeclarationAccessModifier( switch access := access.(type) { case PrimitiveAccess: switch ast.PrimitiveAccess(access) { - case ast.AccessPublicSettable: - // Public settable access for a constant is not sensible - // and type declarations must be public for now - - if isConstant || isTypeDeclaration { - var explanation string - switch { - case isConstant: - explanation = "constants can never be set" - case isTypeDeclaration: - explanation = invalidTypeDeclarationAccessModifierExplanation - } - - checker.report( - &InvalidAccessModifierError{ - Access: access, - Explanation: explanation, - DeclarationKind: declarationKind, - Pos: startPos, - }, - ) - } - - case ast.AccessPrivate: + case ast.AccessSelf: // Type declarations must be public for now if isTypeDeclaration { @@ -2146,7 +2123,7 @@ func (checker *Checker) predeclaredMembers(containerType Type) []*Member { IsInstanceFunctionName, IsInstanceFunctionType, common.DeclarationKindFunction, - ast.AccessPublic, + ast.AccessAll, true, isInstanceFunctionDocString, ) @@ -2157,7 +2134,7 @@ func (checker *Checker) predeclaredMembers(containerType Type) []*Member { GetTypeFunctionName, GetTypeFunctionType, common.DeclarationKindFunction, - ast.AccessPublic, + ast.AccessAll, true, getTypeFunctionDocString, ) @@ -2175,7 +2152,7 @@ func (checker *Checker) predeclaredMembers(containerType Type) []*Member { ContractAccountFieldName, AuthAccountType, common.DeclarationKindField, - ast.AccessPrivate, + ast.AccessSelf, true, contractAccountFieldDocString, ) @@ -2193,7 +2170,7 @@ func (checker *Checker) predeclaredMembers(containerType Type) []*Member { Type: PublicAccountType, }, common.DeclarationKindField, - ast.AccessPublic, + ast.AccessAll, true, resourceOwnerFieldDocString, ) @@ -2205,7 +2182,7 @@ func (checker *Checker) predeclaredMembers(containerType Type) []*Member { ResourceUUIDFieldName, UInt64Type, common.DeclarationKindField, - ast.AccessPublic, + ast.AccessAll, false, resourceUUIDFieldDocString, ) @@ -2216,7 +2193,7 @@ func (checker *Checker) predeclaredMembers(containerType Type) []*Member { CompositeForEachAttachmentFunctionName, CompositeForEachAttachmentFunctionType(compositeKindedType.GetCompositeKind()), common.DeclarationKindFunction, - ast.AccessPublic, + ast.AccessAll, true, compositeForEachAttachmentFunctionDocString, ) @@ -2399,7 +2376,7 @@ func (checker *Checker) effectiveMemberAccess(access Access, containerKind Conta func (checker *Checker) effectiveInterfaceMemberAccess(access Access) Access { if access.Equal(PrimitiveAccess(ast.AccessNotSpecified)) { - return PrimitiveAccess(ast.AccessPublic) + return PrimitiveAccess(ast.AccessAll) } else { return access } @@ -2412,10 +2389,10 @@ func (checker *Checker) effectiveCompositeMemberAccess(access Access) Access { switch checker.Config.AccessCheckMode { case AccessCheckModeStrict, AccessCheckModeNotSpecifiedRestricted: - return PrimitiveAccess(ast.AccessPrivate) + return PrimitiveAccess(ast.AccessSelf) case AccessCheckModeNotSpecifiedUnrestricted, AccessCheckModeNone: - return PrimitiveAccess(ast.AccessPublic) + return PrimitiveAccess(ast.AccessAll) default: panic(errors.NewUnreachableError()) diff --git a/runtime/sema/errors.go b/runtime/sema/errors.go index 4101ed8c2b..f55596d131 100644 --- a/runtime/sema/errors.go +++ b/runtime/sema/errors.go @@ -2828,6 +2828,7 @@ func (e *InvalidAccessError) Error() string { type InvalidAssignmentAccessError struct { Name string + ContainerType Type RestrictingAccess Access DeclarationKind common.DeclarationKind ast.Range @@ -2852,8 +2853,8 @@ func (e *InvalidAssignmentAccessError) Error() string { func (e *InvalidAssignmentAccessError) SecondaryError() string { return fmt.Sprintf( - "consider making it publicly settable with `%s`", - ast.AccessPublicSettable.Keyword(), + "consider adding a setter function to %s", + e.ContainerType.QualifiedString(), ) } diff --git a/runtime/sema/type.go b/runtime/sema/type.go index bc8df79a59..157f66ce41 100644 --- a/runtime/sema/type.go +++ b/runtime/sema/type.go @@ -3344,7 +3344,7 @@ func baseTypeVariable(name string, ty Type) *Variable { Type: ty, DeclarationKind: common.DeclarationKindType, IsConstant: true, - Access: PrimitiveAccess(ast.AccessPublic), + Access: PrimitiveAccess(ast.AccessAll), } } @@ -3564,7 +3564,7 @@ func baseFunctionVariable(name string, ty *FunctionType, docString string) *Vari ArgumentLabels: ty.ArgumentLabels(), IsConstant: true, Type: ty, - Access: PrimitiveAccess(ast.AccessPublic), + Access: PrimitiveAccess(ast.AccessAll), DocString: docString, } } @@ -4359,7 +4359,7 @@ func NewPublicFunctionMember( return &Member{ ContainerType: containerType, - Access: PrimitiveAccess(ast.AccessPublic), + Access: PrimitiveAccess(ast.AccessAll), Identifier: ast.NewIdentifier( memoryGauge, identifier, @@ -4397,7 +4397,7 @@ func NewPublicConstantFieldMember( ) *Member { return &Member{ ContainerType: containerType, - Access: PrimitiveAccess(ast.AccessPublic), + Access: PrimitiveAccess(ast.AccessAll), Identifier: ast.NewIdentifier( memoryGauge, identifier, @@ -5208,7 +5208,7 @@ var _ Type = &ReferenceType{} var _ ValueIndexableType = &ReferenceType{} var _ TypeIndexableType = &ReferenceType{} -var UnauthorizedAccess Access = PrimitiveAccess(ast.AccessPublic) +var UnauthorizedAccess Access = PrimitiveAccess(ast.AccessAll) func NewReferenceType(memoryGauge common.MemoryGauge, typ Type, authorization Access) *ReferenceType { common.UseMemory(memoryGauge, common.ReferenceSemaTypeMemoryUsage) diff --git a/runtime/sema/variable_activations.go b/runtime/sema/variable_activations.go index 21e1ad9eb1..ea089bc248 100644 --- a/runtime/sema/variable_activations.go +++ b/runtime/sema/variable_activations.go @@ -129,7 +129,7 @@ func (a *VariableActivation) DeclareValue(declaration ValueDeclaration) { DeclarationKind: declaration.ValueDeclarationKind(), Type: declaration.ValueDeclarationType(), // TODO: add access to ValueDeclaration and use declaration's access instead here - Access: PrimitiveAccess(ast.AccessPublic), + Access: PrimitiveAccess(ast.AccessAll), IsConstant: declaration.ValueDeclarationIsConstant(), ArgumentLabels: declaration.ValueDeclarationArgumentLabels(), Pos: declaration.ValueDeclarationPosition(), @@ -146,7 +146,7 @@ func (a *VariableActivation) DeclareType(declaration TypeDeclaration) { DeclarationKind: declaration.TypeDeclarationKind(), Type: declaration.TypeDeclarationType(), // TODO: add access to TypeDeclaration and use declaration's access instead here - Access: PrimitiveAccess(ast.AccessPublic), + Access: PrimitiveAccess(ast.AccessAll), IsConstant: true, ArgumentLabels: nil, Pos: declaration.TypeDeclarationPosition(), @@ -321,7 +321,7 @@ func (a *VariableActivations) DeclareValue(declaration ValueDeclaration) (*Varia kind: declaration.ValueDeclarationKind(), ty: declaration.ValueDeclarationType(), // TODO: add access to ValueDeclaration and use declaration's access instead here - access: PrimitiveAccess(ast.AccessPublic), + access: PrimitiveAccess(ast.AccessAll), isConstant: declaration.ValueDeclarationIsConstant(), argumentLabels: declaration.ValueDeclarationArgumentLabels(), pos: variablePos, @@ -363,7 +363,7 @@ func (a *VariableActivations) declareImplicitConstant( variableDeclaration{ identifier: identifier, ty: ty, - access: PrimitiveAccess(ast.AccessPublic), + access: PrimitiveAccess(ast.AccessAll), kind: kind, isConstant: true, allowOuterScopeShadowing: false, diff --git a/runtime/tests/checker/access_test.go b/runtime/tests/checker/access_test.go index c8d8b3ebd6..2b44d6dfc6 100644 --- a/runtime/tests/checker/access_test.go +++ b/runtime/tests/checker/access_test.go @@ -95,10 +95,9 @@ func TestCheckAccessModifierCompositeFunctionDeclaration(t *testing.T) { t.Parallel() tests := map[ast.Access]bool{ - ast.AccessNotSpecified: true, - ast.AccessPrivate: true, - ast.AccessPublic: true, - ast.AccessPublicSettable: false, + ast.AccessNotSpecified: true, + ast.AccessSelf: true, + ast.AccessAll: true, } require.Len(t, tests, len(ast.BasicAccesses)) @@ -147,28 +146,24 @@ func TestCheckAccessModifierInterfaceFunctionDeclaration(t *testing.T) { checkModeTests := map[sema.AccessCheckMode]map[ast.Access]error{ sema.AccessCheckModeStrict: { - ast.AccessNotSpecified: &sema.MissingAccessModifierError{}, - ast.AccessPrivate: &sema.InvalidAccessModifierError{}, - ast.AccessPublic: nil, - ast.AccessPublicSettable: &sema.InvalidAccessModifierError{}, + ast.AccessNotSpecified: &sema.MissingAccessModifierError{}, + ast.AccessSelf: &sema.InvalidAccessModifierError{}, + ast.AccessAll: nil, }, sema.AccessCheckModeNotSpecifiedRestricted: { - ast.AccessNotSpecified: nil, - ast.AccessPrivate: &sema.InvalidAccessModifierError{}, - ast.AccessPublic: nil, - ast.AccessPublicSettable: &sema.InvalidAccessModifierError{}, + ast.AccessNotSpecified: nil, + ast.AccessSelf: &sema.InvalidAccessModifierError{}, + ast.AccessAll: nil, }, sema.AccessCheckModeNotSpecifiedUnrestricted: { - ast.AccessNotSpecified: nil, - ast.AccessPrivate: &sema.InvalidAccessModifierError{}, - ast.AccessPublic: nil, - ast.AccessPublicSettable: &sema.InvalidAccessModifierError{}, + ast.AccessNotSpecified: nil, + ast.AccessSelf: &sema.InvalidAccessModifierError{}, + ast.AccessAll: nil, }, sema.AccessCheckModeNone: { - ast.AccessNotSpecified: nil, - ast.AccessPrivate: &sema.InvalidAccessModifierError{}, - ast.AccessPublic: nil, - ast.AccessPublicSettable: &sema.InvalidAccessModifierError{}, + ast.AccessNotSpecified: nil, + ast.AccessSelf: &sema.InvalidAccessModifierError{}, + ast.AccessAll: nil, }, } @@ -228,15 +223,12 @@ func TestCheckAccessModifierCompositeConstantFieldDeclaration(t *testing.T) { ast.AccessNotSpecified: func(_ bool) bool { return true }, - ast.AccessPrivate: func(isInterface bool) bool { + ast.AccessSelf: func(isInterface bool) bool { return !isInterface }, - ast.AccessPublic: func(_ bool) bool { + ast.AccessAll: func(_ bool) bool { return true }, - ast.AccessPublicSettable: func(_ bool) bool { - return false - }, } require.Len(t, tests, len(ast.BasicAccesses)) @@ -328,7 +320,7 @@ func TestCheckAccessModifierCompositeVariableFieldDeclaration(t *testing.T) { // private fields in interfaces are invalid - if isInterface && access == ast.AccessPrivate { + if isInterface && access == ast.AccessSelf { expectInvalidAccessModifierError(t, err) } else { assert.NoError(t, err) @@ -344,10 +336,9 @@ func TestCheckAccessModifierGlobalFunctionDeclaration(t *testing.T) { t.Parallel() tests := map[ast.Access]bool{ - ast.AccessNotSpecified: true, - ast.AccessPrivate: true, - ast.AccessPublic: true, - ast.AccessPublicSettable: false, + ast.AccessNotSpecified: true, + ast.AccessSelf: true, + ast.AccessAll: true, } require.Len(t, tests, len(ast.BasicAccesses)) @@ -379,10 +370,9 @@ func TestCheckAccessModifierGlobalVariableDeclaration(t *testing.T) { t.Parallel() tests := map[ast.Access]bool{ - ast.AccessNotSpecified: true, - ast.AccessPrivate: true, - ast.AccessPublic: true, - ast.AccessPublicSettable: true, + ast.AccessNotSpecified: true, + ast.AccessSelf: true, + ast.AccessAll: true, } require.Len(t, tests, len(ast.BasicAccesses)) @@ -414,10 +404,9 @@ func TestCheckAccessModifierGlobalConstantDeclaration(t *testing.T) { t.Parallel() tests := map[ast.Access]bool{ - ast.AccessNotSpecified: true, - ast.AccessPrivate: true, - ast.AccessPublic: true, - ast.AccessPublicSettable: false, + ast.AccessNotSpecified: true, + ast.AccessSelf: true, + ast.AccessAll: true, } require.Len(t, tests, len(ast.BasicAccesses)) @@ -449,10 +438,9 @@ func TestCheckAccessModifierLocalVariableDeclaration(t *testing.T) { t.Parallel() tests := map[ast.Access]bool{ - ast.AccessNotSpecified: true, - ast.AccessPrivate: false, - ast.AccessPublic: false, - ast.AccessPublicSettable: false, + ast.AccessNotSpecified: true, + ast.AccessSelf: false, + ast.AccessAll: false, } require.Len(t, tests, len(ast.BasicAccesses)) @@ -496,10 +484,9 @@ func TestCheckAccessModifierLocalFunctionDeclaration(t *testing.T) { t.Parallel() tests := map[ast.Access]bool{ - ast.AccessNotSpecified: true, - ast.AccessPrivate: false, - ast.AccessPublic: false, - ast.AccessPublicSettable: false, + ast.AccessNotSpecified: true, + ast.AccessSelf: false, + ast.AccessAll: false, } require.Len(t, tests, len(ast.BasicAccesses)) @@ -540,28 +527,24 @@ func TestCheckAccessModifierGlobalCompositeDeclaration(t *testing.T) { checkModeTests := map[sema.AccessCheckMode]map[ast.Access]func(*testing.T, error){ sema.AccessCheckModeStrict: { - ast.AccessNotSpecified: expectMissingAccessModifierError, - ast.AccessPrivate: expectInvalidAccessModifierError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectInvalidAccessModifierError, + ast.AccessNotSpecified: expectMissingAccessModifierError, + ast.AccessSelf: expectInvalidAccessModifierError, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNotSpecifiedRestricted: { - ast.AccessNotSpecified: expectMissingAccessModifierError, - ast.AccessPrivate: expectInvalidAccessModifierError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectInvalidAccessModifierError, + ast.AccessNotSpecified: expectMissingAccessModifierError, + ast.AccessSelf: expectInvalidAccessModifierError, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNotSpecifiedUnrestricted: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectInvalidAccessModifierError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectInvalidAccessModifierError, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectInvalidAccessModifierError, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNone: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectInvalidAccessModifierError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectInvalidAccessModifierError, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectInvalidAccessModifierError, + ast.AccessAll: expectSuccess, }, } @@ -643,28 +626,24 @@ func TestCheckAccessCompositeFunction(t *testing.T) { checkModeTests := map[sema.AccessCheckMode]map[ast.Access]func(*testing.T, error){ sema.AccessCheckModeStrict: { - ast.AccessNotSpecified: nil, - ast.AccessPrivate: expectInvalidAccessError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: nil, + ast.AccessNotSpecified: nil, + ast.AccessSelf: expectInvalidAccessError, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNotSpecifiedRestricted: { - ast.AccessNotSpecified: expectInvalidAccessError, - ast.AccessPrivate: expectInvalidAccessError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: nil, + ast.AccessNotSpecified: expectInvalidAccessError, + ast.AccessSelf: expectInvalidAccessError, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNotSpecifiedUnrestricted: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectInvalidAccessError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: nil, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectInvalidAccessError, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNone: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectSuccess, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: nil, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectSuccess, + ast.AccessAll: expectSuccess, }, } @@ -750,28 +729,24 @@ func TestCheckAccessInterfaceFunction(t *testing.T) { checkModeTests := map[sema.AccessCheckMode]map[ast.Access]func(*testing.T, error){ sema.AccessCheckModeStrict: { - ast.AccessNotSpecified: nil, - ast.AccessPrivate: expectInvalidAccessModifierAndInvalidAccessErrors, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: nil, + ast.AccessNotSpecified: nil, + ast.AccessSelf: expectInvalidAccessModifierAndInvalidAccessErrors, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNotSpecifiedRestricted: { - ast.AccessNotSpecified: expectConformanceAndInvalidAccessErrors, - ast.AccessPrivate: expectInvalidAccessModifierAndInvalidAccessErrors, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: nil, + ast.AccessNotSpecified: expectConformanceAndInvalidAccessErrors, + ast.AccessSelf: expectInvalidAccessModifierAndInvalidAccessErrors, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNotSpecifiedUnrestricted: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectInvalidAccessModifierAndInvalidAccessErrors, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: nil, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectInvalidAccessModifierAndInvalidAccessErrors, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNone: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectInvalidAccessModifierError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: nil, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectInvalidAccessModifierError, + ast.AccessAll: expectSuccess, }, } @@ -863,28 +838,24 @@ func TestCheckAccessCompositeFieldRead(t *testing.T) { checkModeTests := map[sema.AccessCheckMode]map[ast.Access]func(*testing.T, error){ sema.AccessCheckModeStrict: { - ast.AccessNotSpecified: nil, - ast.AccessPrivate: expectInvalidAccessError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: nil, + ast.AccessSelf: expectInvalidAccessError, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNotSpecifiedRestricted: { - ast.AccessNotSpecified: expectInvalidAccessError, - ast.AccessPrivate: expectInvalidAccessError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectInvalidAccessError, + ast.AccessSelf: expectInvalidAccessError, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNotSpecifiedUnrestricted: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectInvalidAccessError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectInvalidAccessError, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNone: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectSuccess, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectSuccess, + ast.AccessAll: expectSuccess, }, } @@ -974,28 +945,24 @@ func TestCheckAccessInterfaceFieldRead(t *testing.T) { checkModeTests := map[sema.AccessCheckMode]map[ast.Access]func(*testing.T, error){ sema.AccessCheckModeStrict: { - ast.AccessNotSpecified: nil, - ast.AccessPrivate: expectInvalidAccessModifierAndInvalidAccessErrors, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: nil, + ast.AccessSelf: expectInvalidAccessModifierAndInvalidAccessErrors, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNotSpecifiedRestricted: { - ast.AccessNotSpecified: expectConformanceAndInvalidAccessErrors, - ast.AccessPrivate: expectInvalidAccessModifierAndInvalidAccessErrors, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectConformanceAndInvalidAccessErrors, + ast.AccessSelf: expectInvalidAccessModifierAndInvalidAccessErrors, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNotSpecifiedUnrestricted: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectInvalidAccessModifierAndInvalidAccessErrors, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectInvalidAccessModifierAndInvalidAccessErrors, + ast.AccessAll: expectSuccess, }, sema.AccessCheckModeNone: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectInvalidAccessModifierError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectInvalidAccessModifierError, + ast.AccessAll: expectSuccess, }, } @@ -1093,28 +1060,24 @@ func TestCheckAccessCompositeFieldAssignmentAndSwap(t *testing.T) { checkModeTests := map[sema.AccessCheckMode]map[ast.Access]func(*testing.T, error){ sema.AccessCheckModeStrict: { - ast.AccessNotSpecified: nil, - ast.AccessPrivate: expectTwoAccessErrors, - ast.AccessPublic: expectTwoInvalidAssignmentAccessErrors, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: nil, + ast.AccessSelf: expectTwoAccessErrors, + ast.AccessAll: expectTwoInvalidAssignmentAccessErrors, }, sema.AccessCheckModeNotSpecifiedRestricted: { - ast.AccessNotSpecified: expectTwoAccessErrors, - ast.AccessPrivate: expectTwoAccessErrors, - ast.AccessPublic: expectTwoInvalidAssignmentAccessErrors, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectTwoAccessErrors, + ast.AccessSelf: expectTwoAccessErrors, + ast.AccessAll: expectTwoInvalidAssignmentAccessErrors, }, sema.AccessCheckModeNotSpecifiedUnrestricted: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectTwoAccessErrors, - ast.AccessPublic: expectTwoInvalidAssignmentAccessErrors, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectTwoAccessErrors, + ast.AccessAll: expectTwoInvalidAssignmentAccessErrors, }, sema.AccessCheckModeNone: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectSuccess, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectSuccess, + ast.AccessAll: expectSuccess, }, } @@ -1229,28 +1192,24 @@ func TestCheckAccessInterfaceFieldWrite(t *testing.T) { checkModeTests := map[sema.AccessCheckMode]map[ast.Access]func(*testing.T, error){ sema.AccessCheckModeStrict: { - ast.AccessNotSpecified: nil, - ast.AccessPrivate: expectInvalidAccessModifierAndAccessErrors, - ast.AccessPublic: expectTwoInvalidAssignmentAccessErrors, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: nil, + ast.AccessSelf: expectInvalidAccessModifierAndAccessErrors, + ast.AccessAll: expectTwoInvalidAssignmentAccessErrors, }, sema.AccessCheckModeNotSpecifiedRestricted: { - ast.AccessNotSpecified: expectConformanceAndAccessErrors, - ast.AccessPrivate: expectInvalidAccessModifierAndAccessErrors, - ast.AccessPublic: expectTwoInvalidAssignmentAccessErrors, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectConformanceAndAccessErrors, + ast.AccessSelf: expectInvalidAccessModifierAndAccessErrors, + ast.AccessAll: expectTwoInvalidAssignmentAccessErrors, }, sema.AccessCheckModeNotSpecifiedUnrestricted: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectInvalidAccessModifierAndAccessErrors, - ast.AccessPublic: expectTwoInvalidAssignmentAccessErrors, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectInvalidAccessModifierAndAccessErrors, + ast.AccessAll: expectTwoInvalidAssignmentAccessErrors, }, sema.AccessCheckModeNone: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectInvalidAccessModifierError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectInvalidAccessModifierError, + ast.AccessAll: expectSuccess, }, } @@ -1352,28 +1311,24 @@ func TestCheckAccessCompositeFieldVariableDeclarationWithSecondValue(t *testing. checkModeTests := map[sema.AccessCheckMode]map[ast.Access]func(*testing.T, error){ sema.AccessCheckModeStrict: { - ast.AccessNotSpecified: nil, - ast.AccessPrivate: expectAccessErrors, - ast.AccessPublic: expectInvalidAssignmentAccessError, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: nil, + ast.AccessSelf: expectAccessErrors, + ast.AccessAll: expectInvalidAssignmentAccessError, }, sema.AccessCheckModeNotSpecifiedRestricted: { - ast.AccessNotSpecified: expectAccessErrors, - ast.AccessPrivate: expectAccessErrors, - ast.AccessPublic: expectInvalidAssignmentAccessError, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectAccessErrors, + ast.AccessSelf: expectAccessErrors, + ast.AccessAll: expectInvalidAssignmentAccessError, }, sema.AccessCheckModeNotSpecifiedUnrestricted: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectAccessErrors, - ast.AccessPublic: expectInvalidAssignmentAccessError, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectAccessErrors, + ast.AccessAll: expectInvalidAssignmentAccessError, }, sema.AccessCheckModeNone: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectSuccess, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectSuccess, + ast.AccessAll: expectSuccess, }, } @@ -1454,10 +1409,9 @@ func TestCheckAccessInterfaceFieldVariableDeclarationWithSecondValue(t *testing. checkModeTests := map[sema.AccessCheckMode]map[ast.Access]func(*testing.T, error){ sema.AccessCheckModeStrict: { - ast.AccessNotSpecified: nil, - ast.AccessPrivate: expectPrivateAccessErrors, - ast.AccessPublic: expectInvalidAssignmentAccessError, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: nil, + ast.AccessSelf: expectPrivateAccessErrors, + ast.AccessAll: expectInvalidAssignmentAccessError, }, sema.AccessCheckModeNotSpecifiedRestricted: { ast.AccessNotSpecified: func(t *testing.T, err error) { @@ -1467,21 +1421,18 @@ func TestCheckAccessInterfaceFieldVariableDeclarationWithSecondValue(t *testing. assert.IsType(t, &sema.InvalidAccessError{}, errs[1]) assert.IsType(t, &sema.InvalidAssignmentAccessError{}, errs[2]) }, - ast.AccessPrivate: expectPrivateAccessErrors, - ast.AccessPublic: expectInvalidAssignmentAccessError, - ast.AccessPublicSettable: expectSuccess, + ast.AccessSelf: expectPrivateAccessErrors, + ast.AccessAll: expectInvalidAssignmentAccessError, }, sema.AccessCheckModeNotSpecifiedUnrestricted: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectPrivateAccessErrors, - ast.AccessPublic: expectInvalidAssignmentAccessError, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectPrivateAccessErrors, + ast.AccessAll: expectInvalidAssignmentAccessError, }, sema.AccessCheckModeNone: { - ast.AccessNotSpecified: expectSuccess, - ast.AccessPrivate: expectInvalidAccessModifierError, - ast.AccessPublic: expectSuccess, - ast.AccessPublicSettable: expectSuccess, + ast.AccessNotSpecified: expectSuccess, + ast.AccessSelf: expectInvalidAccessModifierError, + ast.AccessAll: expectSuccess, }, } @@ -1972,10 +1923,10 @@ func TestCheckAccessSameContractInnerStructField(t *testing.T) { t.Parallel() tests := map[ast.Access]bool{ - ast.AccessPrivate: false, + ast.AccessSelf: false, ast.AccessContract: true, ast.AccessAccount: true, - ast.AccessPublic: true, + ast.AccessAll: true, } for access, expectSuccess := range tests { @@ -2019,10 +1970,10 @@ func TestCheckAccessSameContractInnerStructInterfaceField(t *testing.T) { t.Parallel() tests := map[ast.Access]bool{ - ast.AccessPrivate: false, + ast.AccessSelf: false, ast.AccessContract: true, ast.AccessAccount: true, - ast.AccessPublic: true, + ast.AccessAll: true, } for access, expectSuccess := range tests { @@ -2071,10 +2022,10 @@ func TestCheckAccessOtherContractInnerStructField(t *testing.T) { t.Parallel() tests := map[ast.Access]bool{ - ast.AccessPrivate: false, + ast.AccessSelf: false, ast.AccessContract: false, ast.AccessAccount: true, - ast.AccessPublic: true, + ast.AccessAll: true, } for access, expectSuccess := range tests { @@ -2120,7 +2071,7 @@ func TestCheckAccessOtherContractInnerStructInterfaceField(t *testing.T) { t.Parallel() tests := map[ast.Access][]error{ - ast.AccessPrivate: { + ast.AccessSelf: { &sema.InvalidAccessModifierError{}, &sema.InvalidAccessError{}, }, @@ -2128,7 +2079,7 @@ func TestCheckAccessOtherContractInnerStructInterfaceField(t *testing.T) { &sema.InvalidAccessError{}, }, ast.AccessAccount: nil, - ast.AccessPublic: nil, + ast.AccessAll: nil, } for access, expectedErrorTypes := range tests { @@ -2177,7 +2128,7 @@ func TestCheckRestrictiveAccessModifier(t *testing.T) { for _, access := range ast.AllAccesses { - if access <= ast.AccessPrivate { + if access <= ast.AccessSelf { continue } @@ -2252,7 +2203,7 @@ func TestCheckInvalidRestrictiveAccessModifier(t *testing.T) { for _, access := range ast.AllAccesses { if access == ast.AccessNotSpecified || - access > ast.AccessPrivate { + access > ast.AccessSelf { continue } diff --git a/runtime/tests/checker/external_mutation_test.go b/runtime/tests/checker/external_mutation_test.go index d2428afbff..0ca74da510 100644 --- a/runtime/tests/checker/external_mutation_test.go +++ b/runtime/tests/checker/external_mutation_test.go @@ -34,7 +34,7 @@ func TestCheckArrayUpdateIndexAccess(t *testing.T) { t.Parallel() accessModifiers := []ast.Access{ - ast.AccessPublic, + ast.AccessAll, ast.AccessAccount, ast.AccessContract, } @@ -103,7 +103,7 @@ func TestCheckDictionaryUpdateIndexAccess(t *testing.T) { t.Parallel() accessModifiers := []ast.Access{ - ast.AccessPublic, + ast.AccessAll, ast.AccessAccount, ast.AccessContract, } @@ -172,7 +172,7 @@ func TestCheckNestedArrayUpdateIndexAccess(t *testing.T) { t.Parallel() accessModifiers := []ast.Access{ - ast.AccessPublic, + ast.AccessAll, ast.AccessAccount, ast.AccessContract, } @@ -233,7 +233,7 @@ func TestCheckNestedDictionaryUpdateIndexAccess(t *testing.T) { t.Parallel() accessModifiers := []ast.Access{ - ast.AccessPublic, + ast.AccessAll, ast.AccessAccount, ast.AccessContract, } @@ -294,7 +294,7 @@ func TestCheckMutateContractIndexAccess(t *testing.T) { t.Parallel() accessModifiers := []ast.Access{ - ast.AccessPublic, + ast.AccessAll, ast.AccessAccount, ast.AccessContract, } @@ -354,7 +354,7 @@ func TestCheckContractNestedStructIndexAccess(t *testing.T) { t.Parallel() accessModifiers := []ast.Access{ - ast.AccessPublic, + ast.AccessAll, ast.AccessAccount, ast.AccessContract, } @@ -421,7 +421,7 @@ func TestCheckContractStructInitIndexAccess(t *testing.T) { t.Parallel() accessModifiers := []ast.Access{ - ast.AccessPublic, + ast.AccessAll, ast.AccessAccount, ast.AccessContract, } @@ -476,7 +476,7 @@ func TestCheckArrayUpdateMethodCall(t *testing.T) { t.Parallel() accessModifiers := []ast.Access{ - ast.AccessPublic, + ast.AccessAll, ast.AccessAccount, ast.AccessContract, } @@ -569,7 +569,7 @@ func TestCheckDictionaryUpdateMethodCall(t *testing.T) { t.Parallel() accessModifiers := []ast.Access{ - ast.AccessPublic, + ast.AccessAll, ast.AccessAccount, ast.AccessContract, } From d1c016bd628cfb5b509b6e370df66754671ce04d Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Tue, 6 Jun 2023 12:04:02 -0400 Subject: [PATCH 02/20] update ast tests --- runtime/ast/attachment_test.go | 6 ++-- runtime/ast/composite_test.go | 28 +++++++++--------- runtime/ast/entitlement_declaration_test.go | 12 ++++---- runtime/ast/function_declaration_test.go | 8 +++--- runtime/ast/interface_test.go | 10 +++---- runtime/ast/transaction_declaration_test.go | 4 +-- runtime/ast/variable_declaration_test.go | 10 +++---- runtime/tests/examples/examples.go | 32 ++++++++++----------- 8 files changed, 55 insertions(+), 55 deletions(-) diff --git a/runtime/ast/attachment_test.go b/runtime/ast/attachment_test.go index 3cd03c84bf..bc54bbfb16 100644 --- a/runtime/ast/attachment_test.go +++ b/runtime/ast/attachment_test.go @@ -88,7 +88,7 @@ func TestAttachmentDeclaration_MarshallJSON(t *testing.T) { ` { "Type": "AttachmentDeclaration", - "Access": "AccessPublic", + "Access": "AccessAll", "StartPos": {"Offset": 1, "Line": 2, "Column": 3}, "EndPos": {"Offset": 4, "Line": 5, "Column": 6}, "Identifier": { @@ -206,7 +206,7 @@ func TestAttachmentDeclaration_Doc(t *testing.T) { require.Equal( t, prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("attachment"), prettier.Text(" "), @@ -258,7 +258,7 @@ func TestAttachmentDeclaration_Doc(t *testing.T) { decl.Doc(), ) - require.Equal(t, "pub attachment Foo for Bar: Baz {\nrequire entitlement X\nrequire entitlement Y\n}", decl.String()) + require.Equal(t, "access(all) attachment Foo for Bar: Baz {\nrequire entitlement X\nrequire entitlement Y\n}", decl.String()) } func TestAttachExpressionMarshallJSON(t *testing.T) { diff --git a/runtime/ast/composite_test.go b/runtime/ast/composite_test.go index a14e03190e..cf24f7cbbd 100644 --- a/runtime/ast/composite_test.go +++ b/runtime/ast/composite_test.go @@ -66,7 +66,7 @@ func TestFieldDeclaration_MarshalJSON(t *testing.T) { ` { "Type": "FieldDeclaration", - "Access": "AccessPublic", + "Access": "AccessAll", "IsStatic": true, "IsNative": true, "VariableKind": "VariableKindConstant", @@ -128,7 +128,7 @@ func TestFieldDeclaration_Doc(t *testing.T) { t, prettier.Group{ Doc: prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("static"), prettier.Text(" "), @@ -217,7 +217,7 @@ func TestFieldDeclaration_Doc(t *testing.T) { t, prettier.Group{ Doc: prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Group{ Doc: prettier.Concat{ @@ -298,7 +298,7 @@ func TestFieldDeclaration_String(t *testing.T) { require.Equal( t, - "pub let xyz: @CD", + "access(all) let xyz: @CD", decl.String(), ) }) @@ -351,7 +351,7 @@ func TestFieldDeclaration_String(t *testing.T) { require.Equal( t, - "pub xyz: @CD", + "access(all) xyz: @CD", decl.String(), ) @@ -420,7 +420,7 @@ func TestCompositeDeclaration_MarshalJSON(t *testing.T) { ` { "Type": "CompositeDeclaration", - "Access": "AccessPublic", + "Access": "AccessAll", "CompositeKind": "CompositeKindResource", "Identifier": { "Identifier": "AB", @@ -483,7 +483,7 @@ func TestCompositeDeclaration_Doc(t *testing.T) { require.Equal( t, prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("resource"), prettier.Text(" "), @@ -555,7 +555,7 @@ func TestCompositeDeclaration_Doc(t *testing.T) { require.Equal( t, prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("resource"), prettier.Text(" "), @@ -636,7 +636,7 @@ func TestCompositeDeclaration_Doc(t *testing.T) { require.Equal( t, prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("event"), prettier.Text(" "), @@ -693,7 +693,7 @@ func TestCompositeDeclaration_Doc(t *testing.T) { require.Equal( t, prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("enum"), prettier.Text(" "), @@ -763,7 +763,7 @@ func TestCompositeDeclaration_String(t *testing.T) { require.Equal( t, - "pub resource AB: CD, EF {}", + "access(all) resource AB: CD, EF {}", decl.String(), ) }) @@ -809,7 +809,7 @@ func TestCompositeDeclaration_String(t *testing.T) { require.Equal( t, - "pub resource AB: CD, EF {\n"+ + "access(all) resource AB: CD, EF {\n"+ " x: X\n"+ "}", decl.String(), @@ -850,7 +850,7 @@ func TestCompositeDeclaration_String(t *testing.T) { require.Equal( t, - "pub event AB(e: E)", + "access(all) event AB(e: E)", decl.String(), ) }) @@ -884,7 +884,7 @@ func TestCompositeDeclaration_String(t *testing.T) { require.Equal( t, - "pub enum AB: CD {\n"+ + "access(all) enum AB: CD {\n"+ " case x\n"+ "}", decl.String(), diff --git a/runtime/ast/entitlement_declaration_test.go b/runtime/ast/entitlement_declaration_test.go index 39ebc9651b..59d54b1a08 100644 --- a/runtime/ast/entitlement_declaration_test.go +++ b/runtime/ast/entitlement_declaration_test.go @@ -52,7 +52,7 @@ func TestEntitlementDeclaration_MarshalJSON(t *testing.T) { ` { "Type": "EntitlementDeclaration", - "Access": "AccessPublic", + "Access": "AccessAll", "Identifier": { "Identifier": "AB", "StartPos": {"Offset": 1, "Line": 2, "Column": 3}, @@ -85,7 +85,7 @@ func TestEntitlementDeclaration_Doc(t *testing.T) { require.Equal( t, prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("entitlement "), prettier.Text("AB"), @@ -113,7 +113,7 @@ func TestEntitlementDeclaration_String(t *testing.T) { require.Equal( t, - "pub entitlement AB", + "access(all) entitlement AB", decl.String(), ) @@ -161,7 +161,7 @@ func TestEntitlementMappingDeclaration_MarshalJSON(t *testing.T) { ` { "Type": "EntitlementMappingDeclaration", - "Access": "AccessPublic", + "Access": "AccessAll", "Identifier": { "Identifier": "AB", "StartPos": {"Offset": 1, "Line": 2, "Column": 3}, @@ -236,7 +236,7 @@ func TestEntitlementMappingDeclaration_Doc(t *testing.T) { require.Equal( t, prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("entitlement "), prettier.Text("mapping "), @@ -296,7 +296,7 @@ func TestEntitlementMappingDeclaration_String(t *testing.T) { require.Equal( t, - `pub entitlement mapping AB { + `access(all) entitlement mapping AB { X -> Y }`, decl.String(), diff --git a/runtime/ast/function_declaration_test.go b/runtime/ast/function_declaration_test.go index 3c4078b70a..f87471d236 100644 --- a/runtime/ast/function_declaration_test.go +++ b/runtime/ast/function_declaration_test.go @@ -125,7 +125,7 @@ func TestFunctionDeclaration_MarshalJSON(t *testing.T) { ` { "Type": "FunctionDeclaration", - "Access": "AccessPublic", + "Access": "AccessAll", "IsStatic": true, "IsNative": true, "Identifier": { @@ -330,7 +330,7 @@ func TestFunctionDeclaration_Doc(t *testing.T) { require.Equal(t, prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Space, prettier.Text("view"), prettier.Space, @@ -420,7 +420,7 @@ func TestFunctionDeclaration_String(t *testing.T) { } require.Equal(t, - "pub fun xyz(ok foobar: AB): @CD {}", + "access(all) fun xyz(ok foobar: AB): @CD {}", decl.String(), ) @@ -488,7 +488,7 @@ func TestFunctionDeclaration_String(t *testing.T) { } require.Equal(t, - "pub fun xyz(ok foobar: AB): @CD {}", + "access(all) fun xyz(ok foobar: AB): @CD {}", decl.String(), ) }) diff --git a/runtime/ast/interface_test.go b/runtime/ast/interface_test.go index 3d9ad2f986..4040f4f858 100644 --- a/runtime/ast/interface_test.go +++ b/runtime/ast/interface_test.go @@ -56,7 +56,7 @@ func TestInterfaceDeclaration_MarshalJSON(t *testing.T) { ` { "Type": "InterfaceDeclaration", - "Access": "AccessPublic", + "Access": "AccessAll", "CompositeKind": "CompositeKindResource", "Identifier": { "Identifier": "AB", @@ -95,7 +95,7 @@ func TestInterfaceDeclaration_Doc(t *testing.T) { require.Equal( t, prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("resource"), prettier.Text(" "), @@ -139,7 +139,7 @@ func TestInterfaceDeclaration_Doc(t *testing.T) { require.Equal( t, prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("resource"), prettier.Text(" "), @@ -189,7 +189,7 @@ func TestInterfaceDeclaration_String(t *testing.T) { require.Equal( t, - "pub resource interface AB {}", + "access(all) resource interface AB {}", decl.String(), ) @@ -224,7 +224,7 @@ func TestInterfaceDeclaration_String(t *testing.T) { require.Equal( t, - "pub resource interface AB {\n"+ + "access(all) resource interface AB {\n"+ " x: X\n"+ "}", decl.String(), diff --git a/runtime/ast/transaction_declaration_test.go b/runtime/ast/transaction_declaration_test.go index 5c4e83506c..d4f4c17d32 100644 --- a/runtime/ast/transaction_declaration_test.go +++ b/runtime/ast/transaction_declaration_test.go @@ -210,7 +210,7 @@ func TestTransactionDeclaration_Doc(t *testing.T) { prettier.HardLine{}, prettier.Group{ Doc: prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("let"), prettier.Text(" "), @@ -448,7 +448,7 @@ func TestTransactionDeclaration_String(t *testing.T) { require.Equal( t, "transaction(x: X) {\n"+ - " pub let f: @F\n"+ + " access(all) let f: @F\n"+ " \n"+ " prepare(signer: AuthAccount) {}\n"+ " \n"+ diff --git a/runtime/ast/variable_declaration_test.go b/runtime/ast/variable_declaration_test.go index 767396d5f3..ae43b35e48 100644 --- a/runtime/ast/variable_declaration_test.go +++ b/runtime/ast/variable_declaration_test.go @@ -82,7 +82,7 @@ func TestVariableDeclaration_MarshalJSON(t *testing.T) { ` { "Type": "VariableDeclaration", - "Access": "AccessPublic", + "Access": "AccessAll", "IsConstant": true, "Identifier": { "Identifier": "foo", @@ -170,7 +170,7 @@ func TestVariableDeclaration_Doc(t *testing.T) { require.Equal(t, prettier.Group{ Doc: prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("let"), prettier.Text(" "), @@ -239,7 +239,7 @@ func TestVariableDeclaration_Doc(t *testing.T) { require.Equal(t, prettier.Group{ Doc: prettier.Concat{ - prettier.Text("pub"), + prettier.Text("access(all)"), prettier.Text(" "), prettier.Text("let"), prettier.Text(" "), @@ -309,7 +309,7 @@ func TestVariableDeclaration_String(t *testing.T) { } require.Equal(t, - "pub let foo: @AB <- true", + "access(all) let foo: @AB <- true", decl.String(), ) }) @@ -347,7 +347,7 @@ func TestVariableDeclaration_String(t *testing.T) { } require.Equal(t, - "pub let foo: @AB <- true <- false", + "access(all) let foo: @AB <- true <- false", decl.String(), ) }) diff --git a/runtime/tests/examples/examples.go b/runtime/tests/examples/examples.go index cc5cffd408..855b9e5ccb 100644 --- a/runtime/tests/examples/examples.go +++ b/runtime/tests/examples/examples.go @@ -19,48 +19,48 @@ package examples const FungibleTokenContractInterface = ` - pub contract interface FungibleToken { + access(all) contract interface FungibleToken { - pub resource interface Provider { + access(all) resource interface Provider { - pub fun withdraw(amount: Int): @Vault + access(all) fun withdraw(amount: Int): @Vault } - pub resource interface Receiver { + access(all) resource interface Receiver { - pub fun deposit(vault: @Vault) + access(all) fun deposit(vault: @Vault) } - pub resource Vault: Provider, Receiver { + access(all) resource Vault: Provider, Receiver { - pub balance: Int + access(all) balance: Int init(balance: Int) } - pub fun absorb(vault: @Vault) + access(all) fun absorb(vault: @Vault) - pub fun sprout(balance: Int): @Vault + access(all) fun sprout(balance: Int): @Vault } ` const ExampleFungibleTokenContract = ` - pub contract ExampleToken: FungibleToken { + access(all) contract ExampleToken: FungibleToken { - pub resource Vault: FungibleToken.Receiver, FungibleToken.Provider { + access(all) resource Vault: FungibleToken.Receiver, FungibleToken.Provider { - pub var balance: Int + access(all) var balance: Int init(balance: Int) { self.balance = balance } - pub fun withdraw(amount: Int): @FungibleToken.Vault { + access(all) fun withdraw(amount: Int): @FungibleToken.Vault { self.balance = self.balance - amount return <-create Vault(balance: amount) } - pub fun deposit(vault: @FungibleToken.Vault) { + access(all) fun deposit(vault: @FungibleToken.Vault) { if let exampleVault <- vault as? @Vault { self.balance = self.balance + exampleVault.balance destroy exampleVault @@ -71,11 +71,11 @@ const ExampleFungibleTokenContract = ` } } - pub fun absorb(vault: @FungibleToken.Vault) { + access(all) fun absorb(vault: @FungibleToken.Vault) { destroy vault } - pub fun sprout(balance: Int): @FungibleToken.Vault { + access(all) fun sprout(balance: Int): @FungibleToken.Vault { return <-create Vault(balance: balance) } } From f820c4640337589ff3b1ca64f6a444b24e8b23b3 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Tue, 6 Jun 2023 13:50:32 -0400 Subject: [PATCH 03/20] update declaration parser tests --- go.mod | 1 + go.sum | 2 + runtime/parser/declaration_test.go | 2024 ++++++++++++++++++++-------- runtime/tests/utils/utils.go | 9 +- 4 files changed, 1475 insertions(+), 561 deletions(-) diff --git a/go.mod b/go.mod index e0693bdce2..6389697ac9 100644 --- a/go.mod +++ b/go.mod @@ -41,6 +41,7 @@ require github.com/zeebo/xxh3 v1.0.2 // indirect require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/fxamacker/circlehash v0.3.0 // indirect + github.com/k0kubun/pp v3.0.1+incompatible // indirect github.com/klauspost/cpuid/v2 v2.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.16 // indirect diff --git a/go.sum b/go.sum index d62ed380c4..e1f58f29b7 100644 --- a/go.sum +++ b/go.sum @@ -21,6 +21,8 @@ github.com/go-test/deep v1.0.5/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= +github.com/k0kubun/pp v3.0.1+incompatible h1:3tqvf7QgUnZ5tXO6pNAZlrvHgl6DvifjDrd9g2S9Z40= +github.com/k0kubun/pp v3.0.1+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= github.com/k0kubun/pp/v3 v3.2.0 h1:h33hNTZ9nVFNP3u2Fsgz8JXiF5JINoZfFq4SvKJwNcs= github.com/k0kubun/pp/v3 v3.2.0/go.mod h1:ODtJQbQcIRfAD3N+theGCV1m/CBxweERz2dapdz1EwA= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= diff --git a/runtime/parser/declaration_test.go b/runtime/parser/declaration_test.go index e3a55a29e6..c1baf0dbd5 100644 --- a/runtime/parser/declaration_test.go +++ b/runtime/parser/declaration_test.go @@ -72,36 +72,57 @@ func TestParseVariableDeclaration(t *testing.T) { ) }) - t.Run("var, no type annotation, copy, one value, pub", func(t *testing.T) { + t.Run("var, no type annotation, copy, one value, access(all)", func(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(" pub var x = 1") + result, errs := testParseDeclarations(" access(all) var x = 1") require.Empty(t, errs) utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.VariableDeclaration{ - Access: ast.AccessAll, - IsConstant: false, - Identifier: ast.Identifier{ - Identifier: "x", - Pos: ast.Position{Line: 1, Column: 9, Offset: 9}, - }, Value: &ast.IntegerExpression{ - PositiveLiteral: []byte("1"), - Value: big.NewInt(1), - Base: 10, + Value: big.NewInt(1), + PositiveLiteral: []uint8{ + 0x31, + }, Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 13, Offset: 13}, - EndPos: ast.Position{Line: 1, Column: 13, Offset: 13}, + StartPos: ast.Position{ + Offset: 21, + Line: 1, + Column: 21, + }, + EndPos: ast.Position{ + Offset: 21, + Line: 1, + Column: 21, + }, }, + Base: 10, }, Transfer: &ast.Transfer{ - Operation: ast.TransferOperationCopy, - Pos: ast.Position{Line: 1, Column: 11, Offset: 11}, + Operation: 0x1, + Pos: ast.Position{ + Offset: 19, + Line: 1, + Column: 19, + }, }, - StartPos: ast.Position{Line: 1, Column: 1, Offset: 1}, + Identifier: ast.Identifier{ + Identifier: "x", + Pos: ast.Position{ + Offset: 17, + Line: 1, + Column: 17, + }, + }, + StartPos: ast.Position{ + Offset: 1, + Line: 1, + Column: 1, + }, + Access: ast.AccessAll, }, }, result, @@ -598,37 +619,60 @@ func TestParseFunctionDeclaration(t *testing.T) { ) }) - t.Run("without return type, pub", func(t *testing.T) { + t.Run("without return type, access(all)", func(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations("pub fun foo () { }") + result, errs := testParseDeclarations("access(all) fun foo () { }") require.Empty(t, errs) utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.FunctionDeclaration{ - Access: ast.AccessAll, - Identifier: ast.Identifier{ - Identifier: "foo", - Pos: ast.Position{Line: 1, Column: 8, Offset: 8}, - }, ParameterList: &ast.ParameterList{ - Parameters: nil, Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 12, Offset: 12}, - EndPos: ast.Position{Line: 1, Column: 13, Offset: 13}, + StartPos: ast.Position{ + Offset: 20, + Line: 1, + Column: 20, + }, + EndPos: ast.Position{ + Offset: 21, + Line: 1, + Column: 21, + }, }, }, FunctionBlock: &ast.FunctionBlock{ Block: &ast.Block{ Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 15, Offset: 15}, - EndPos: ast.Position{Line: 1, Column: 17, Offset: 17}, + StartPos: ast.Position{ + Offset: 23, + Line: 1, + Column: 23, + }, + EndPos: ast.Position{ + Offset: 25, + Line: 1, + Column: 25, + }, }, }, }, - StartPos: ast.Position{Line: 1, Column: 0, Offset: 0}, + Identifier: ast.Identifier{ + Identifier: "foo", + Pos: ast.Position{ + Offset: 16, + Line: 1, + Column: 16, + }, + }, + StartPos: ast.Position{ + Offset: 0, + Line: 1, + Column: 0, + }, + Access: ast.AccessAll, }, }, result, @@ -1273,13 +1317,13 @@ func TestParseFunctionDeclaration(t *testing.T) { ) }) - t.Run("pub static native, enabled", func(t *testing.T) { + t.Run("access(all) static native, enabled", func(t *testing.T) { t.Parallel() result, errs := ParseDeclarations( nil, - []byte("pub static native fun foo() {}"), + []byte("access(all) static native fun foo() {}"), Config{ StaticModifierEnabled: true, NativeModifierEnabled: true, @@ -1290,45 +1334,78 @@ func TestParseFunctionDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.FunctionDeclaration{ - Access: ast.AccessAll, - Flags: ast.FunctionDeclarationFlagsIsStatic | ast.FunctionDeclarationFlagsIsNative, - Identifier: ast.Identifier{ - Identifier: "foo", - Pos: ast.Position{Line: 1, Column: 22, Offset: 22}, - }, + Purity: 0, + TypeParameterList: (*ast.TypeParameterList)(nil), ParameterList: &ast.ParameterList{ - Parameters: nil, Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 25, Offset: 25}, - EndPos: ast.Position{Line: 1, Column: 26, Offset: 26}, + StartPos: ast.Position{ + Offset: 33, + Line: 1, + Column: 33, + }, + EndPos: ast.Position{ + Offset: 34, + Line: 1, + Column: 34, + }, }, }, + ReturnTypeAnnotation: (*ast.TypeAnnotation)(nil), FunctionBlock: &ast.FunctionBlock{ Block: &ast.Block{ Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 28, Offset: 28}, - EndPos: ast.Position{Line: 1, Column: 29, Offset: 29}, + StartPos: ast.Position{ + Offset: 36, + Line: 1, + Column: 36, + }, + EndPos: ast.Position{ + Offset: 37, + Line: 1, + Column: 37, + }, }, }, + PreConditions: (*ast.Conditions)(nil), + PostConditions: (*ast.Conditions)(nil), }, - StartPos: ast.Position{Line: 1, Column: 0, Offset: 0}, + DocString: "", + Identifier: ast.Identifier{ + Identifier: "foo", + Pos: ast.Position{ + Offset: 30, + Line: 1, + Column: 30, + }, + }, + StartPos: ast.Position{ + Offset: 0, + Line: 1, + Column: 0, + }, + Access: ast.AccessAll, + Flags: 0x03, }, }, result, ) }) - t.Run("pub static native, disabled", func(t *testing.T) { + t.Run("access(all) static native, disabled", func(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations("pub static native fun foo() {}") + _, errs := testParseDeclarations("access(all) static native fun foo() {}") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "unexpected token: identifier", - Pos: ast.Position{Offset: 4, Line: 1, Column: 4}, + Pos: ast.Position{ + Offset: 12, + Line: 1, + Column: 12, + }, }, }, errs, @@ -2354,78 +2431,129 @@ func TestParseEvent(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(" priv event E2 ( a : Int , b : String )") + result, errs := testParseDeclarations(" access(self) event E2 ( a : Int , b : String )") require.Empty(t, errs) utils.AssertEqualWithDiff(t, []ast.Declaration{ - &ast.CompositeDeclaration{ - Access: ast.AccessSelf, - CompositeKind: common.CompositeKindEvent, - Identifier: ast.Identifier{ - Identifier: "E2", - Pos: ast.Position{Offset: 12, Line: 1, Column: 12}, - }, Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.SpecialFunctionDeclaration{ - Kind: common.DeclarationKindInitializer, FunctionDeclaration: &ast.FunctionDeclaration{ - Access: ast.AccessNotSpecified, ParameterList: &ast.ParameterList{ Parameters: []*ast.Parameter{ { - Label: "", - Identifier: ast.Identifier{ - Identifier: "a", - Pos: ast.Position{Offset: 17, Line: 1, Column: 17}, - }, TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 21, Line: 1, Column: 21}, + Pos: ast.Position{ + Offset: 29, + Line: 1, + Column: 29, + }, }, }, - StartPos: ast.Position{Offset: 21, Line: 1, Column: 21}, + StartPos: ast.Position{ + Offset: 29, + Line: 1, + Column: 29, + }, }, - StartPos: ast.Position{Offset: 17, Line: 1, Column: 17}, - }, - { - Label: "", Identifier: ast.Identifier{ - Identifier: "b", - Pos: ast.Position{Offset: 27, Line: 1, Column: 27}, + Identifier: "a", + Pos: ast.Position{ + Offset: 25, + Line: 1, + Column: 25, + }, + }, + StartPos: ast.Position{ + Offset: 25, + Line: 1, + Column: 25, }, + }, + { TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "String", - Pos: ast.Position{Offset: 31, Line: 1, Column: 31}, + Pos: ast.Position{ + Offset: 39, + Line: 1, + Column: 39, + }, }, }, - StartPos: ast.Position{Offset: 31, Line: 1, Column: 31}, + StartPos: ast.Position{ + Offset: 39, + Line: 1, + Column: 39, + }, + }, + Identifier: ast.Identifier{ + Identifier: "b", + Pos: ast.Position{ + Offset: 35, + Line: 1, + Column: 35, + }, + }, + StartPos: ast.Position{ + Offset: 35, + Line: 1, + Column: 35, }, - StartPos: ast.Position{Offset: 27, Line: 1, Column: 27}, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 15, Line: 1, Column: 15}, - EndPos: ast.Position{Offset: 38, Line: 1, Column: 38}, + StartPos: ast.Position{ + Offset: 23, + Line: 1, + Column: 23, + }, + EndPos: ast.Position{ + Offset: 46, + Line: 1, + Column: 46, + }, }, }, - StartPos: ast.Position{Offset: 15, Line: 1, Column: 15}, + StartPos: ast.Position{ + Offset: 23, + Line: 1, + Column: 23, + }, + Access: ast.AccessNotSpecified, }, + Kind: common.DeclarationKindInitializer, }, }, ), + Identifier: ast.Identifier{ + Identifier: "E2", + Pos: ast.Position{ + Offset: 20, + Line: 1, + Column: 20, + }, + }, Range: ast.Range{ - StartPos: ast.Position{Offset: 1, Line: 1, Column: 1}, - EndPos: ast.Position{Offset: 38, Line: 1, Column: 38}, + StartPos: ast.Position{ + Offset: 1, + Line: 1, + Column: 1, + }, + EndPos: ast.Position{ + Offset: 46, + Line: 1, + Column: 46, + }, }, + Access: ast.AccessSelf, + CompositeKind: common.CompositeKindEvent, }, }, result, @@ -2748,12 +2876,12 @@ func TestParseField(t *testing.T) { ) }) - t.Run("pub static native, enabled", func(t *testing.T) { + t.Run("access(all) static native, enabled", func(t *testing.T) { t.Parallel() result, errs := parse( - "pub static native let foo: Int", + "access(all) static native let foo: Int", Config{ StaticModifierEnabled: true, NativeModifierEnabled: true, @@ -2763,42 +2891,63 @@ func TestParseField(t *testing.T) { utils.AssertEqualWithDiff(t, &ast.FieldDeclaration{ - Access: ast.AccessAll, - Flags: ast.FieldDeclarationFlagsIsStatic | ast.FieldDeclarationFlagsIsNative, - VariableKind: ast.VariableKindConstant, - Identifier: ast.Identifier{ - Identifier: "foo", - Pos: ast.Position{Line: 1, Column: 22, Offset: 22}, - }, TypeAnnotation: &ast.TypeAnnotation{ Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Line: 1, Column: 27, Offset: 27}, + Pos: ast.Position{ + Offset: 35, + Line: 1, + Column: 35, + }, }, }, - StartPos: ast.Position{Line: 1, Column: 27, Offset: 27}, + StartPos: ast.Position{ + Offset: 35, + Line: 1, + Column: 35, + }, + IsResource: false, + }, + Identifier: ast.Identifier{ + Identifier: "foo", + Pos: ast.Position{ + Offset: 30, + Line: 1, + Column: 30, + }, }, Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 0, Offset: 0}, - EndPos: ast.Position{Line: 1, Column: 29, Offset: 29}, + StartPos: ast.Position{ + Offset: 0, + Line: 1, + Column: 0, + }, + EndPos: ast.Position{ + Offset: 37, + Line: 1, + Column: 37, + }, }, + Access: ast.AccessAll, + VariableKind: 0x2, + Flags: 0x03, }, result, ) }) - t.Run("pub static native, disabled", func(t *testing.T) { + t.Run("access(all) static native, disabled", func(t *testing.T) { t.Parallel() - _, errs := parse("pub static native let foo: Int", Config{}) + _, errs := parse("access(all) static native let foo: Int", Config{}) utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "unexpected identifier", - Pos: ast.Position{Offset: 4, Line: 1, Column: 4}, + Pos: ast.Position{Offset: 12, Line: 1, Column: 12}, }, }, errs, @@ -2815,23 +2964,35 @@ func TestParseCompositeDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(" pub struct S { }") + result, errs := testParseDeclarations(" access(all) struct S { }") require.Empty(t, errs) utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.CompositeDeclaration{ - Access: ast.AccessAll, - CompositeKind: common.CompositeKindStructure, + Members: ast.NewUnmeteredMembers(nil), Identifier: ast.Identifier{ Identifier: "S", - Pos: ast.Position{Line: 1, Column: 12, Offset: 12}, + Pos: ast.Position{ + Offset: 20, + Line: 1, + Column: 20, + }, }, - Members: &ast.Members{}, Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 1, Offset: 1}, - EndPos: ast.Position{Line: 1, Column: 16, Offset: 16}, + StartPos: ast.Position{ + Offset: 1, + Line: 1, + Column: 1, + }, + EndPos: ast.Position{ + Offset: 24, + Line: 1, + Column: 24, + }, }, + Access: ast.AccessAll, + CompositeKind: 0x1, }, }, result, @@ -2842,7 +3003,7 @@ func TestParseCompositeDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(" pub resource R : RI { }") + result, errs := testParseDeclarations(" access(all) resource R : RI { }") require.Empty(t, errs) utils.AssertEqualWithDiff(t, @@ -2852,20 +3013,20 @@ func TestParseCompositeDeclaration(t *testing.T) { CompositeKind: common.CompositeKindResource, Identifier: ast.Identifier{ Identifier: "R", - Pos: ast.Position{Line: 1, Column: 14, Offset: 14}, + Pos: ast.Position{Line: 1, Column: 22, Offset: 22}, }, Conformances: []*ast.NominalType{ { Identifier: ast.Identifier{ Identifier: "RI", - Pos: ast.Position{Line: 1, Column: 18, Offset: 18}, + Pos: ast.Position{Line: 1, Column: 26, Offset: 26}, }, }, }, Members: &ast.Members{}, Range: ast.Range{ StartPos: ast.Position{Line: 1, Column: 1, Offset: 1}, - EndPos: ast.Position{Line: 1, Column: 23, Offset: 23}, + EndPos: ast.Position{Line: 1, Column: 31, Offset: 31}, }, }, }, @@ -2879,13 +3040,13 @@ func TestParseCompositeDeclaration(t *testing.T) { result, errs := testParseDeclarations(` struct Test { - pub var foo: Int + access(all) var foo: Int init(foo: Int) { self.foo = foo } - pub fun getFoo(): Int { + access(all) fun getFoo(): Int { return self.foo } } @@ -2896,68 +3057,100 @@ func TestParseCompositeDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.CompositeDeclaration{ - Access: ast.AccessNotSpecified, - CompositeKind: common.CompositeKindStructure, - Identifier: ast.Identifier{ - Identifier: "Test", - Pos: ast.Position{Offset: 18, Line: 2, Column: 17}, - }, Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.FieldDeclaration{ - Access: ast.AccessAll, - VariableKind: ast.VariableKindVariable, - Identifier: ast.Identifier{ - Identifier: "foo", - Pos: ast.Position{Offset: 52, Line: 3, Column: 27}, - }, TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 57, Line: 3, Column: 32}, + Pos: ast.Position{ + Offset: 60, + Line: 3, + Column: 35, + }, }, }, - StartPos: ast.Position{Offset: 57, Line: 3, Column: 32}, + StartPos: ast.Position{ + Offset: 60, + Line: 3, + Column: 35, + }, + IsResource: false, + }, + Identifier: ast.Identifier{ + Identifier: "foo", + Pos: ast.Position{ + Offset: 55, + Line: 3, + Column: 30, + }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 39, Line: 3, Column: 14}, - EndPos: ast.Position{Offset: 59, Line: 3, Column: 34}, + StartPos: ast.Position{ + Offset: 39, + Line: 3, + Column: 14, + }, + EndPos: ast.Position{ + Offset: 62, + Line: 3, + Column: 37, + }, }, + Access: ast.AccessAll, + VariableKind: 0x1, + Flags: 0x00, }, &ast.SpecialFunctionDeclaration{ - Kind: common.DeclarationKindInitializer, FunctionDeclaration: &ast.FunctionDeclaration{ - Access: ast.AccessNotSpecified, - Identifier: ast.Identifier{ - Identifier: "init", - Pos: ast.Position{Offset: 76, Line: 5, Column: 14}, - }, ParameterList: &ast.ParameterList{ Parameters: []*ast.Parameter{ - { - Label: "", - Identifier: ast.Identifier{ - Identifier: "foo", - Pos: ast.Position{Offset: 81, Line: 5, Column: 19}, - }, + &ast.Parameter{ TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 86, Line: 5, Column: 24}, + Pos: ast.Position{ + Offset: 89, + Line: 5, + Column: 24, + }, }, }, - StartPos: ast.Position{Offset: 86, Line: 5, Column: 24}, + StartPos: ast.Position{ + Offset: 89, + Line: 5, + Column: 24, + }, + IsResource: false, + }, + Identifier: ast.Identifier{ + Identifier: "foo", + Pos: ast.Position{ + Offset: 84, + Line: 5, + Column: 19, + }, + }, + StartPos: ast.Position{ + Offset: 84, + Line: 5, + Column: 19, }, - StartPos: ast.Position{Offset: 81, Line: 5, Column: 19}, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 80, Line: 5, Column: 18}, - EndPos: ast.Position{Offset: 89, Line: 5, Column: 27}, + StartPos: ast.Position{ + Offset: 83, + Line: 5, + Column: 18, + }, + EndPos: ast.Position{ + Offset: 92, + Line: 5, + Column: 27, + }, }, }, FunctionBlock: &ast.FunctionBlock{ @@ -2968,57 +3161,112 @@ func TestParseCompositeDeclaration(t *testing.T) { Expression: &ast.IdentifierExpression{ Identifier: ast.Identifier{ Identifier: "self", - Pos: ast.Position{Offset: 111, Line: 6, Column: 18}, + Pos: ast.Position{ + Offset: 114, + Line: 6, + Column: 18, + }, }, }, - AccessPos: ast.Position{Offset: 115, Line: 6, Column: 22}, Identifier: ast.Identifier{ Identifier: "foo", - Pos: ast.Position{Offset: 116, Line: 6, Column: 23}, + Pos: ast.Position{ + Offset: 119, + Line: 6, + Column: 23, + }, }, + AccessPos: ast.Position{ + Offset: 118, + Line: 6, + Column: 22, + }, + Optional: false, }, Transfer: &ast.Transfer{ - Operation: ast.TransferOperationCopy, - Pos: ast.Position{Offset: 120, Line: 6, Column: 27}, + Operation: 0x1, + Pos: ast.Position{ + Offset: 123, + Line: 6, + Column: 27, + }, }, Value: &ast.IdentifierExpression{ Identifier: ast.Identifier{ Identifier: "foo", - Pos: ast.Position{Offset: 122, Line: 6, Column: 29}, + Pos: ast.Position{ + Offset: 125, + Line: 6, + Column: 29, + }, }, }, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 91, Line: 5, Column: 29}, - EndPos: ast.Position{Offset: 140, Line: 7, Column: 14}, + StartPos: ast.Position{ + Offset: 94, + Line: 5, + Column: 29, + }, + EndPos: ast.Position{ + Offset: 143, + Line: 7, + Column: 14, + }, }, }, }, - StartPos: ast.Position{Offset: 76, Line: 5, Column: 14}, + Identifier: ast.Identifier{ + Identifier: "init", + Pos: ast.Position{ + Offset: 79, + Line: 5, + Column: 14, + }, + }, + StartPos: ast.Position{ + Offset: 79, + Line: 5, + Column: 14, + }, + Access: ast.AccessNotSpecified, + Flags: 0x00, }, + Kind: 0xd, }, &ast.FunctionDeclaration{ - Access: ast.AccessAll, - Identifier: ast.Identifier{ - Identifier: "getFoo", - Pos: ast.Position{Offset: 165, Line: 9, Column: 22}, - }, ParameterList: &ast.ParameterList{ Range: ast.Range{ - StartPos: ast.Position{Offset: 171, Line: 9, Column: 28}, - EndPos: ast.Position{Offset: 172, Line: 9, Column: 29}, + StartPos: ast.Position{ + Offset: 182, + Line: 9, + Column: 36, + }, + EndPos: ast.Position{ + Offset: 183, + Line: 9, + Column: 37, + }, }, }, ReturnTypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 175, Line: 9, Column: 32}, + Pos: ast.Position{ + Offset: 186, + Line: 9, + Column: 40, + }, }, }, - StartPos: ast.Position{Offset: 175, Line: 9, Column: 32}, + StartPos: ast.Position{ + Offset: 186, + Line: 9, + Column: 40, + }, + IsResource: false, }, FunctionBlock: &ast.FunctionBlock{ Block: &ast.Block{ @@ -3028,35 +3276,97 @@ func TestParseCompositeDeclaration(t *testing.T) { Expression: &ast.IdentifierExpression{ Identifier: ast.Identifier{ Identifier: "self", - Pos: ast.Position{Offset: 206, Line: 10, Column: 25}, + Pos: ast.Position{ + Offset: 217, + Line: 10, + Column: 25, + }, }, }, - AccessPos: ast.Position{Offset: 210, Line: 10, Column: 29}, Identifier: ast.Identifier{ Identifier: "foo", - Pos: ast.Position{Offset: 211, Line: 10, Column: 30}, + Pos: ast.Position{ + Offset: 222, + Line: 10, + Column: 30, + }, + }, + AccessPos: ast.Position{ + Offset: 221, + Line: 10, + Column: 29, }, + Optional: false, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 199, Line: 10, Column: 18}, - EndPos: ast.Position{Offset: 213, Line: 10, Column: 32}, + StartPos: ast.Position{ + Offset: 210, + Line: 10, + Column: 18, + }, + EndPos: ast.Position{ + Offset: 224, + Line: 10, + Column: 32, + }, }, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 179, Line: 9, Column: 36}, - EndPos: ast.Position{Offset: 229, Line: 11, Column: 14}, + StartPos: ast.Position{ + Offset: 190, + Line: 9, + Column: 44, + }, + EndPos: ast.Position{ + Offset: 240, + Line: 11, + Column: 14, + }, }, }, }, - StartPos: ast.Position{Offset: 157, Line: 9, Column: 14}, + DocString: "", + Identifier: ast.Identifier{ + Identifier: "getFoo", + Pos: ast.Position{ + Offset: 176, + Line: 9, + Column: 30, + }, + }, + StartPos: ast.Position{ + Offset: 160, + Line: 9, + Column: 14, + }, + Access: ast.AccessAll, + Flags: 0x00, }, }, ), + Identifier: ast.Identifier{ + Identifier: "Test", + Pos: ast.Position{ + Offset: 18, + Line: 2, + Column: 17, + }, + }, Range: ast.Range{ - StartPos: ast.Position{Offset: 11, Line: 2, Column: 10}, - EndPos: ast.Position{Offset: 241, Line: 12, Column: 10}, + StartPos: ast.Position{ + Offset: 11, + Line: 2, + Column: 10, + }, + EndPos: ast.Position{ + Offset: 252, + Line: 12, + Column: 10, + }, }, + Access: ast.AccessNotSpecified, + CompositeKind: 0x1, }, }, result, @@ -3249,11 +3559,11 @@ func TestParseInvalidCompositeFunctionWithSelfParameter(t *testing.T) { func TestParseInvalidParameterWithoutLabel(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(`pub fun foo(continue: Int) {}`) + _, errs := testParseDeclarations(`access(all) fun foo(continue: Int) {}`) utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ - Pos: ast.Position{Line: 1, Column: 12, Offset: 12}, + Pos: ast.Position{Line: 1, Column: 20, Offset: 20}, Message: "expected identifier for argument label or parameter name, got keyword continue", }, }, errs) @@ -3262,11 +3572,11 @@ func TestParseInvalidParameterWithoutLabel(t *testing.T) { func TestParseParametersWithExtraLabels(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(`pub fun foo(_ foo: String, label fable table: Int) {}`) + _, errs := testParseDeclarations(`access(all) fun foo(_ foo: String, label fable table: Int) {}`) utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ - Pos: ast.Position{Line: 1, Column: 39, Offset: 39}, + Pos: ast.Position{Line: 1, Column: 47, Offset: 47}, Message: "expected ':' after parameter name, got identifier", }, }, errs) @@ -3280,7 +3590,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations("pub attachment E for S {} ") + result, errs := testParseDeclarations("access(all) attachment E for S {} ") require.Empty(t, errs) utils.AssertEqualWithDiff(t, @@ -3289,18 +3599,18 @@ func TestParseAttachmentDeclaration(t *testing.T) { Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", - Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, + Pos: ast.Position{Line: 1, Column: 23, Offset: 23}, }, BaseType: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "S", - Pos: ast.Position{Line: 1, Column: 21, Offset: 21}, + Pos: ast.Position{Line: 1, Column: 29, Offset: 29}, }, }, Members: &ast.Members{}, Range: ast.Range{ StartPos: ast.Position{Line: 1, Column: 0, Offset: 0}, - EndPos: ast.Position{Line: 1, Column: 24, Offset: 24}, + EndPos: ast.Position{Line: 1, Column: 32, Offset: 32}, }, }, }, @@ -3314,7 +3624,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { result, errs := testParseDeclarations(` contract Test { - pub attachment E for S {} + access(all) attachment E for S {} }`) require.Empty(t, errs) @@ -3329,7 +3639,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { }, Range: ast.Range{ StartPos: ast.Position{Line: 2, Column: 2, Offset: 3}, - EndPos: ast.Position{Line: 4, Column: 2, Offset: 50}, + EndPos: ast.Position{Line: 4, Column: 2, Offset: 58}, }, Members: ast.NewUnmeteredMembers( []ast.Declaration{ @@ -3337,18 +3647,18 @@ func TestParseAttachmentDeclaration(t *testing.T) { Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", - Pos: ast.Position{Line: 3, Column: 18, Offset: 37}, + Pos: ast.Position{Line: 3, Column: 26, Offset: 45}, }, BaseType: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "S", - Pos: ast.Position{Line: 3, Column: 24, Offset: 43}, + Pos: ast.Position{Line: 3, Column: 32, Offset: 51}, }, }, Members: &ast.Members{}, Range: ast.Range{ StartPos: ast.Position{Line: 3, Column: 3, Offset: 22}, - EndPos: ast.Position{Line: 3, Column: 27, Offset: 46}, + EndPos: ast.Position{Line: 3, Column: 35, Offset: 54}, }, }, }, @@ -3379,7 +3689,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations("pub attachment E for S: I {} ") + result, errs := testParseDeclarations("access(all) attachment E for S: I {} ") require.Empty(t, errs) utils.AssertEqualWithDiff(t, @@ -3388,12 +3698,12 @@ func TestParseAttachmentDeclaration(t *testing.T) { Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", - Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, + Pos: ast.Position{Line: 1, Column: 23, Offset: 23}, }, BaseType: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "S", - Pos: ast.Position{Line: 1, Column: 21, Offset: 21}, + Pos: ast.Position{Line: 1, Column: 29, Offset: 29}, }, }, Members: &ast.Members{}, @@ -3402,14 +3712,14 @@ func TestParseAttachmentDeclaration(t *testing.T) { nil, ast.Identifier{ Identifier: "I", - Pos: ast.Position{Line: 1, Column: 24, Offset: 24}, + Pos: ast.Position{Line: 1, Column: 32, Offset: 32}, }, nil, ), }, Range: ast.Range{ StartPos: ast.Position{Line: 1, Column: 0, Offset: 0}, - EndPos: ast.Position{Line: 1, Column: 27, Offset: 27}, + EndPos: ast.Position{Line: 1, Column: 35, Offset: 35}, }, }, }, @@ -3421,7 +3731,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations("pub attachment E for S: I1, I2 {} ") + result, errs := testParseDeclarations("access(all) attachment E for S: I1, I2 {} ") require.Empty(t, errs) utils.AssertEqualWithDiff(t, @@ -3430,36 +3740,56 @@ func TestParseAttachmentDeclaration(t *testing.T) { Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", - Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, + Pos: ast.Position{ + Offset: 23, + Line: 1, + Column: 23, + }, }, BaseType: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "S", - Pos: ast.Position{Line: 1, Column: 21, Offset: 21}, + Pos: ast.Position{ + Offset: 29, + Line: 1, + Column: 29, + }, }, }, - Members: &ast.Members{}, Conformances: []*ast.NominalType{ - ast.NewNominalType( - nil, - ast.Identifier{ + { + Identifier: ast.Identifier{ Identifier: "I1", - Pos: ast.Position{Line: 1, Column: 24, Offset: 24}, + Pos: ast.Position{ + Offset: 32, + Line: 1, + Column: 32, + }, }, - nil, - ), - ast.NewNominalType( - nil, - ast.Identifier{ + }, + { + Identifier: ast.Identifier{ Identifier: "I2", - Pos: ast.Position{Line: 1, Column: 28, Offset: 28}, + Pos: ast.Position{ + Offset: 36, + Line: 1, + Column: 36, + }, }, - nil, - ), + }, }, + Members: ast.NewUnmeteredMembers(nil), Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 0, Offset: 0}, - EndPos: ast.Position{Line: 1, Column: 32, Offset: 32}, + StartPos: ast.Position{ + Offset: 0, + Line: 1, + Column: 0, + }, + EndPos: ast.Position{ + Offset: 40, + Line: 1, + Column: 40, + }, }, }, }, @@ -3471,11 +3801,11 @@ func TestParseAttachmentDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(`pub attachment E for S { - pub var foo: Int + result, errs := testParseDeclarations(`access(all) attachment E for S { + access(all) var foo: Int init() {} destroy() {} - pub fun getFoo(): Int {} + access(all) fun getFoo(): Int {} }`) require.Empty(t, errs) @@ -3485,125 +3815,243 @@ func TestParseAttachmentDeclaration(t *testing.T) { Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", - Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, + Pos: ast.Position{ + Offset: 23, + Line: 1, + Column: 23, + }, }, BaseType: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "S", - Pos: ast.Position{Line: 1, Column: 21, Offset: 21}, + Pos: ast.Position{ + Offset: 29, + Line: 1, + Column: 29, + }, }, }, Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.FieldDeclaration{ - Access: ast.AccessAll, - VariableKind: ast.VariableKindVariable, - Identifier: ast.Identifier{ - Identifier: "foo", - Pos: ast.Position{Offset: 41, Line: 2, Column: 16}, - }, TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 46, Line: 2, Column: 21}, + Pos: ast.Position{ + Offset: 57, + Line: 2, + Column: 24, + }, }, }, - StartPos: ast.Position{Offset: 46, Line: 2, Column: 21}, + StartPos: ast.Position{ + Offset: 57, + Line: 2, + Column: 24, + }, + IsResource: false, + }, + Identifier: ast.Identifier{ + Identifier: "foo", + Pos: ast.Position{ + Offset: 52, + Line: 2, + Column: 19, + }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 28, Line: 2, Column: 3}, - EndPos: ast.Position{Offset: 48, Line: 2, Column: 23}, + StartPos: ast.Position{ + Offset: 36, + Line: 2, + Column: 3, + }, + EndPos: ast.Position{ + Offset: 59, + Line: 2, + Column: 26, + }, }, + Access: ast.AccessAll, + VariableKind: 0x1, + Flags: 0x00, }, &ast.SpecialFunctionDeclaration{ - Kind: common.DeclarationKindInitializer, FunctionDeclaration: &ast.FunctionDeclaration{ - Access: ast.AccessNotSpecified, - Identifier: ast.Identifier{ - Identifier: "init", - Pos: ast.Position{Offset: 53, Line: 3, Column: 3}, - }, ParameterList: &ast.ParameterList{ Range: ast.Range{ - StartPos: ast.Position{Offset: 57, Line: 3, Column: 7}, - EndPos: ast.Position{Offset: 58, Line: 3, Column: 8}, + StartPos: ast.Position{ + Offset: 68, + Line: 3, + Column: 7, + }, + EndPos: ast.Position{ + Offset: 69, + Line: 3, + Column: 8, + }, }, }, FunctionBlock: &ast.FunctionBlock{ Block: &ast.Block{ Range: ast.Range{ - StartPos: ast.Position{Offset: 60, Line: 3, Column: 10}, - EndPos: ast.Position{Offset: 61, Line: 3, Column: 11}, + StartPos: ast.Position{ + Offset: 71, + Line: 3, + Column: 10, + }, + EndPos: ast.Position{ + Offset: 72, + Line: 3, + Column: 11, + }, }, }, }, - StartPos: ast.Position{Offset: 53, Line: 3, Column: 3}, + Identifier: ast.Identifier{ + Identifier: "init", + Pos: ast.Position{ + Offset: 64, + Line: 3, + Column: 3, + }, + }, + StartPos: ast.Position{ + Offset: 64, + Line: 3, + Column: 3, + }, + Access: ast.AccessNotSpecified, }, + Kind: 0xd, }, &ast.SpecialFunctionDeclaration{ - Kind: common.DeclarationKindDestructor, FunctionDeclaration: &ast.FunctionDeclaration{ - Access: ast.AccessNotSpecified, - Identifier: ast.Identifier{ - Identifier: "destroy", - Pos: ast.Position{Offset: 66, Line: 4, Column: 3}, - }, ParameterList: &ast.ParameterList{ Range: ast.Range{ - StartPos: ast.Position{Offset: 73, Line: 4, Column: 10}, - EndPos: ast.Position{Offset: 74, Line: 4, Column: 11}, + StartPos: ast.Position{ + Offset: 84, + Line: 4, + Column: 10, + }, + EndPos: ast.Position{ + Offset: 85, + Line: 4, + Column: 11, + }, }, }, FunctionBlock: &ast.FunctionBlock{ Block: &ast.Block{ Range: ast.Range{ - StartPos: ast.Position{Offset: 76, Line: 4, Column: 13}, - EndPos: ast.Position{Offset: 77, Line: 4, Column: 14}, + StartPos: ast.Position{ + Offset: 87, + Line: 4, + Column: 13, + }, + EndPos: ast.Position{ + Offset: 88, + Line: 4, + Column: 14, + }, }, }, }, - StartPos: ast.Position{Offset: 66, Line: 4, Column: 3}, + Identifier: ast.Identifier{ + Identifier: "destroy", + Pos: ast.Position{ + Offset: 77, + Line: 4, + Column: 3, + }, + }, + StartPos: ast.Position{ + Offset: 77, + Line: 4, + Column: 3, + }, + Access: ast.AccessNotSpecified, + Flags: 0x00, }, + Kind: 0xe, }, &ast.FunctionDeclaration{ - Access: ast.AccessAll, - Identifier: ast.Identifier{ - Identifier: "getFoo", - Pos: ast.Position{Offset: 90, Line: 5, Column: 11}, - }, ParameterList: &ast.ParameterList{ Range: ast.Range{ - StartPos: ast.Position{Offset: 96, Line: 5, Column: 17}, - EndPos: ast.Position{Offset: 97, Line: 5, Column: 18}, + StartPos: ast.Position{ + Offset: 115, + Line: 5, + Column: 25, + }, + EndPos: ast.Position{ + Offset: 116, + Line: 5, + Column: 26, + }, }, }, ReturnTypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 100, Line: 5, Column: 21}, + Pos: ast.Position{ + Offset: 119, + Line: 5, + Column: 29, + }, }, }, - StartPos: ast.Position{Offset: 100, Line: 5, Column: 21}, + StartPos: ast.Position{ + Offset: 119, + Line: 5, + Column: 29, + }, + IsResource: false, }, FunctionBlock: &ast.FunctionBlock{ Block: &ast.Block{ Range: ast.Range{ - StartPos: ast.Position{Offset: 104, Line: 5, Column: 25}, - EndPos: ast.Position{Offset: 105, Line: 5, Column: 26}, + StartPos: ast.Position{ + Offset: 123, + Line: 5, + Column: 33, + }, + EndPos: ast.Position{ + Offset: 124, + Line: 5, + Column: 34, + }, }, }, }, - StartPos: ast.Position{Offset: 82, Line: 5, Column: 3}, + Identifier: ast.Identifier{ + Identifier: "getFoo", + Pos: ast.Position{ + Offset: 109, + Line: 5, + Column: 19, + }, + }, + StartPos: ast.Position{ + Offset: 93, + Line: 5, + Column: 3, + }, + Access: ast.AccessAll, }, }, ), Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 0, Offset: 0}, - EndPos: ast.Position{Line: 6, Column: 2, Offset: 109}, + StartPos: ast.Position{ + Offset: 0, + Line: 1, + Column: 0, + }, + EndPos: ast.Position{ + Offset: 128, + Line: 6, + Column: 2, + }, }, }, }, @@ -3615,7 +4063,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(`pub attachment E for S { + result, errs := testParseDeclarations(`access(all) attachment E for S { require entitlement X require entitlement Y destroy() {} @@ -3628,64 +4076,108 @@ func TestParseAttachmentDeclaration(t *testing.T) { Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", - Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, + Pos: ast.Position{ + Offset: 23, + Line: 1, + Column: 23, + }, }, BaseType: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "S", - Pos: ast.Position{Line: 1, Column: 21, Offset: 21}, + Pos: ast.Position{ + Offset: 29, + Line: 1, + Column: 29, + }, + }, + }, + RequiredEntitlements: []*ast.NominalType{ + &ast.NominalType{ + Identifier: ast.Identifier{ + Identifier: "X", + Pos: ast.Position{ + Offset: 56, + Line: 2, + Column: 23, + }, + }, + }, + &ast.NominalType{ + Identifier: ast.Identifier{ + Identifier: "Y", + Pos: ast.Position{ + Offset: 81, + Line: 3, + Column: 23, + }, + }, }, }, Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.SpecialFunctionDeclaration{ - Kind: common.DeclarationKindDestructor, FunctionDeclaration: &ast.FunctionDeclaration{ - Access: ast.AccessNotSpecified, - Identifier: ast.Identifier{ - Identifier: "destroy", - Pos: ast.Position{Offset: 78, Line: 4, Column: 3}, - }, ParameterList: &ast.ParameterList{ Range: ast.Range{ - StartPos: ast.Position{Offset: 85, Line: 4, Column: 10}, - EndPos: ast.Position{Offset: 86, Line: 4, Column: 11}, + StartPos: ast.Position{ + Offset: 93, + Line: 4, + Column: 10, + }, + EndPos: ast.Position{ + Offset: 94, + Line: 4, + Column: 11, + }, }, }, FunctionBlock: &ast.FunctionBlock{ Block: &ast.Block{ Range: ast.Range{ - StartPos: ast.Position{Offset: 88, Line: 4, Column: 13}, - EndPos: ast.Position{Offset: 89, Line: 4, Column: 14}, + StartPos: ast.Position{ + Offset: 96, + Line: 4, + Column: 13, + }, + EndPos: ast.Position{ + Offset: 97, + Line: 4, + Column: 14, + }, }, }, }, - StartPos: ast.Position{Offset: 78, Line: 4, Column: 3}, + Identifier: ast.Identifier{ + Identifier: "destroy", + Pos: ast.Position{ + Offset: 86, + Line: 4, + Column: 3, + }, + }, + StartPos: ast.Position{ + Offset: 86, + Line: 4, + Column: 3, + }, + Access: ast.AccessNotSpecified, }, + Kind: 0xe, }, }, ), - RequiredEntitlements: []*ast.NominalType{ - ast.NewNominalType( - nil, - ast.Identifier{ - Identifier: "X", - Pos: ast.Position{Line: 2, Column: 23, Offset: 48}, - }, - nil, - ), - ast.NewNominalType( - nil, - ast.Identifier{ - Identifier: "Y", - Pos: ast.Position{Line: 3, Column: 23, Offset: 73}, - }, - nil, - ), - }, Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 0, Offset: 0}, - EndPos: ast.Position{Line: 5, Column: 2, Offset: 93}, + StartPos: ast.Position{ + Offset: 0, + Line: 1, + Column: 0, + }, + EndPos: ast.Position{ + Offset: 101, + Line: 5, + Column: 2, + }, }, }, }, @@ -3697,13 +4189,13 @@ func TestParseAttachmentDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(`pub attachment E for S { + _, errs := testParseDeclarations(`access(all) attachment E for S { require entitlement destroy() {} }`) utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ - Pos: ast.Position{Line: 3, Column: 10, Offset: 59}, + Pos: ast.Position{Line: 3, Column: 10, Offset: 67}, Message: "unexpected '('", }, }, errs) @@ -3713,13 +4205,13 @@ func TestParseAttachmentDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(`pub attachment E for S { + _, errs := testParseDeclarations(`access(all) attachment E for S { require X destroy() {} }`) utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ - Pos: ast.Position{Line: 2, Column: 11, Offset: 36}, + Pos: ast.Position{Line: 2, Column: 11, Offset: 44}, Message: "expected 'entitlement', got identifier", }, }, errs) @@ -3729,13 +4221,13 @@ func TestParseAttachmentDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(`pub attachment E for S { + _, errs := testParseDeclarations(`access(all) attachment E for S { require entitlement [X] destroy() {} }`) utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ - Pos: ast.Position{Line: 2, Column: 26, Offset: 51}, + Pos: ast.Position{Line: 2, Column: 26, Offset: 59}, Message: "unexpected non-nominal type: [X]", }, }, errs) @@ -3745,7 +4237,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(`pub attachment E for S { + result, errs := testParseDeclarations(`access(all) attachment E for S { access(X) var foo: Int }`) require.Empty(t, errs) @@ -3756,54 +4248,94 @@ func TestParseAttachmentDeclaration(t *testing.T) { Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", - Pos: ast.Position{Line: 1, Column: 15, Offset: 15}, + Pos: ast.Position{ + Offset: 23, + Line: 1, + Column: 23, + }, }, BaseType: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "S", - Pos: ast.Position{Line: 1, Column: 21, Offset: 21}, + Pos: ast.Position{ + Offset: 29, + Line: 1, + Column: 29, + }, }, }, Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.FieldDeclaration{ + TypeAnnotation: &ast.TypeAnnotation{ + Type: &ast.NominalType{ + Identifier: ast.Identifier{ + Identifier: "Int", + Pos: ast.Position{ + Offset: 55, + Line: 2, + Column: 22, + }, + }, + }, + StartPos: ast.Position{ + Offset: 55, + Line: 2, + Column: 22, + }, + IsResource: false, + }, + Identifier: ast.Identifier{ + Identifier: "foo", + Pos: ast.Position{ + Offset: 50, + Line: 2, + Column: 17, + }, + }, + Range: ast.Range{ + StartPos: ast.Position{ + Offset: 36, + Line: 2, + Column: 3, + }, + EndPos: ast.Position{ + Offset: 57, + Line: 2, + Column: 24, + }, + }, Access: ast.EntitlementAccess{ EntitlementSet: &ast.ConjunctiveEntitlementSet{ Elements: []*ast.NominalType{ { Identifier: ast.Identifier{ Identifier: "X", - Pos: ast.Position{Offset: 35, Line: 2, Column: 10}, + Pos: ast.Position{ + Offset: 43, + Line: 2, + Column: 10, + }, }, }, }, }, }, - VariableKind: ast.VariableKindVariable, - Identifier: ast.Identifier{ - Identifier: "foo", - Pos: ast.Position{Offset: 42, Line: 2, Column: 17}, - }, - TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, - Type: &ast.NominalType{ - Identifier: ast.Identifier{ - Identifier: "Int", - Pos: ast.Position{Offset: 47, Line: 2, Column: 22}, - }, - }, - StartPos: ast.Position{Offset: 47, Line: 2, Column: 22}, - }, - Range: ast.Range{ - StartPos: ast.Position{Offset: 28, Line: 2, Column: 3}, - EndPos: ast.Position{Offset: 49, Line: 2, Column: 24}, - }, + VariableKind: 0x1, }, }, ), Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 0, Offset: 0}, - EndPos: ast.Position{Line: 3, Column: 2, Offset: 53}, + StartPos: ast.Position{ + Offset: 0, + Line: 1, + Column: 0, + }, + EndPos: ast.Position{ + Offset: 61, + Line: 3, + Column: 2, + }, }, }, }, @@ -3820,7 +4352,7 @@ func TestParseInterfaceDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(" pub struct interface S { }") + result, errs := testParseDeclarations(" access(all) struct interface S { }") require.Empty(t, errs) utils.AssertEqualWithDiff(t, @@ -3830,12 +4362,12 @@ func TestParseInterfaceDeclaration(t *testing.T) { CompositeKind: common.CompositeKindStructure, Identifier: ast.Identifier{ Identifier: "S", - Pos: ast.Position{Line: 1, Column: 22, Offset: 22}, + Pos: ast.Position{Line: 1, Column: 30, Offset: 30}, }, Members: &ast.Members{}, Range: ast.Range{ StartPos: ast.Position{Line: 1, Column: 1, Offset: 1}, - EndPos: ast.Position{Line: 1, Column: 26, Offset: 26}, + EndPos: ast.Position{Line: 1, Column: 34, Offset: 34}, }, }, }, @@ -3847,12 +4379,12 @@ func TestParseInterfaceDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(" pub struct interface interface { }") + result, errs := testParseDeclarations(" access(all) struct interface interface { }") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "expected interface name, got keyword \"interface\"", - Pos: ast.Position{Offset: 22, Line: 1, Column: 22}, + Pos: ast.Position{Offset: 30, Line: 1, Column: 30}, }, }, errs, @@ -3872,13 +4404,13 @@ func TestParseInterfaceDeclaration(t *testing.T) { result, errs := testParseDeclarations(` struct interface Test { - pub var foo: Int + access(all) var foo: Int init(foo: Int) - pub fun getFoo(): Int + access(all) fun getFoo(): Int - pub fun getBar(): Int {} + access(all) fun getBar(): Int {} destroy() {} } @@ -3889,160 +4421,307 @@ func TestParseInterfaceDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.InterfaceDeclaration{ - Access: ast.AccessNotSpecified, - CompositeKind: common.CompositeKindStructure, - Identifier: ast.Identifier{ - Identifier: "Test", - Pos: ast.Position{Offset: 28, Line: 2, Column: 27}, - }, Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.FieldDeclaration{ - Access: ast.AccessAll, - VariableKind: ast.VariableKindVariable, - Identifier: ast.Identifier{ - Identifier: "foo", - Pos: ast.Position{Offset: 62, Line: 3, Column: 27}, - }, TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 67, Line: 3, Column: 32}, + Pos: ast.Position{ + Offset: 70, + Line: 3, + Column: 35, + }, }, }, - StartPos: ast.Position{Offset: 67, Line: 3, Column: 32}, + StartPos: ast.Position{ + Offset: 70, + Line: 3, + Column: 35, + }, + IsResource: false, + }, + Identifier: ast.Identifier{ + Identifier: "foo", + Pos: ast.Position{ + Offset: 65, + Line: 3, + Column: 30, + }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 49, Line: 3, Column: 14}, - EndPos: ast.Position{Offset: 69, Line: 3, Column: 34}, + StartPos: ast.Position{ + Offset: 49, + Line: 3, + Column: 14, + }, + EndPos: ast.Position{ + Offset: 72, + Line: 3, + Column: 37, + }, }, + Access: ast.AccessAll, + VariableKind: 0x1, + Flags: 0x00, }, &ast.SpecialFunctionDeclaration{ - Kind: common.DeclarationKindInitializer, FunctionDeclaration: &ast.FunctionDeclaration{ - Access: ast.AccessNotSpecified, - Identifier: ast.Identifier{ - Identifier: "init", - Pos: ast.Position{Offset: 86, Line: 5, Column: 14}, - }, ParameterList: &ast.ParameterList{ Parameters: []*ast.Parameter{ { - Label: "", - Identifier: ast.Identifier{ - Identifier: "foo", - Pos: ast.Position{Offset: 91, Line: 5, Column: 19}, - }, TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 96, Line: 5, Column: 24}, + Pos: ast.Position{ + Offset: 99, + Line: 5, + Column: 24, + }, }, }, - StartPos: ast.Position{Offset: 96, Line: 5, Column: 24}, + StartPos: ast.Position{ + Offset: 99, + Line: 5, + Column: 24, + }, + IsResource: false, + }, + Identifier: ast.Identifier{ + Identifier: "foo", + Pos: ast.Position{ + Offset: 94, + Line: 5, + Column: 19, + }, + }, + StartPos: ast.Position{ + Offset: 94, + Line: 5, + Column: 19, }, - StartPos: ast.Position{Offset: 91, Line: 5, Column: 19}, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 90, Line: 5, Column: 18}, - EndPos: ast.Position{Offset: 99, Line: 5, Column: 27}, + StartPos: ast.Position{ + Offset: 93, + Line: 5, + Column: 18, + }, + EndPos: ast.Position{ + Offset: 102, + Line: 5, + Column: 27, + }, + }, + }, + Identifier: ast.Identifier{ + Identifier: "init", + Pos: ast.Position{ + Offset: 89, + Line: 5, + Column: 14, }, }, - StartPos: ast.Position{Offset: 86, Line: 5, Column: 14}, + StartPos: ast.Position{ + Offset: 89, + Line: 5, + Column: 14, + }, + Access: ast.AccessNotSpecified, + Flags: 0x00, }, + Kind: 0xd, }, &ast.FunctionDeclaration{ - Access: ast.AccessAll, - Identifier: ast.Identifier{ - Identifier: "getFoo", - Pos: ast.Position{Offset: 124, Line: 7, Column: 22}, - }, ParameterList: &ast.ParameterList{ Range: ast.Range{ - StartPos: ast.Position{Offset: 130, Line: 7, Column: 28}, - EndPos: ast.Position{Offset: 131, Line: 7, Column: 29}, + StartPos: ast.Position{ + Offset: 141, + Line: 7, + Column: 36, + }, + EndPos: ast.Position{ + Offset: 142, + Line: 7, + Column: 37, + }, }, }, ReturnTypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 134, Line: 7, Column: 32}, + Pos: ast.Position{ + Offset: 145, + Line: 7, + Column: 40, + }, }, }, - StartPos: ast.Position{Offset: 134, Line: 7, Column: 32}, + StartPos: ast.Position{ + Offset: 145, + Line: 7, + Column: 40, + }, + IsResource: false, }, - StartPos: ast.Position{Offset: 116, Line: 7, Column: 14}, - }, - &ast.FunctionDeclaration{ - Access: ast.AccessAll, Identifier: ast.Identifier{ - Identifier: "getBar", - Pos: ast.Position{Offset: 161, Line: 9, Column: 22}, + Identifier: "getFoo", + Pos: ast.Position{ + Offset: 135, + Line: 7, + Column: 30, + }, }, + StartPos: ast.Position{ + Offset: 119, + Line: 7, + Column: 14, + }, + Access: ast.AccessAll, + Flags: 0x00, + }, + &ast.FunctionDeclaration{ ParameterList: &ast.ParameterList{ Range: ast.Range{ - StartPos: ast.Position{Offset: 167, Line: 9, Column: 28}, - EndPos: ast.Position{Offset: 168, Line: 9, Column: 29}, + StartPos: ast.Position{ + Offset: 186, + Line: 9, + Column: 36, + }, + EndPos: ast.Position{ + Offset: 187, + Line: 9, + Column: 37, + }, }, }, ReturnTypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 171, Line: 9, Column: 32}, + Pos: ast.Position{ + Offset: 190, + Line: 9, + Column: 40, + }, }, }, - StartPos: ast.Position{Offset: 171, Line: 9, Column: 32}, + StartPos: ast.Position{ + Offset: 190, + Line: 9, + Column: 40, + }, + IsResource: false, }, FunctionBlock: &ast.FunctionBlock{ Block: &ast.Block{ Range: ast.Range{ - StartPos: ast.Position{Offset: 175, Line: 9, Column: 36}, - EndPos: ast.Position{Offset: 176, Line: 9, Column: 37}, + StartPos: ast.Position{ + Offset: 194, + Line: 9, + Column: 44, + }, + EndPos: ast.Position{ + Offset: 195, + Line: 9, + Column: 45, + }, }, }, }, - StartPos: ast.Position{Offset: 153, Line: 9, Column: 14}, + Identifier: ast.Identifier{ + Identifier: "getBar", + Pos: ast.Position{ + Offset: 180, + Line: 9, + Column: 30, + }, + }, + StartPos: ast.Position{ + Offset: 164, + Line: 9, + Column: 14, + }, + Access: ast.AccessAll, }, &ast.SpecialFunctionDeclaration{ - Kind: common.DeclarationKindDestructor, FunctionDeclaration: &ast.FunctionDeclaration{ - Access: ast.AccessNotSpecified, - Identifier: ast.Identifier{ - Identifier: "destroy", - Pos: ast.Position{Offset: 193, Line: 11, Column: 14}, - }, ParameterList: &ast.ParameterList{ Range: ast.Range{ - StartPos: ast.Position{Offset: 200, Line: 11, Column: 21}, - EndPos: ast.Position{Offset: 201, Line: 11, Column: 22}, + StartPos: ast.Position{ + Offset: 219, + Line: 11, + Column: 21, + }, + EndPos: ast.Position{ + Offset: 220, + Line: 11, + Column: 22, + }, }, }, FunctionBlock: &ast.FunctionBlock{ Block: &ast.Block{ Range: ast.Range{ - StartPos: ast.Position{Offset: 203, Line: 11, Column: 24}, - EndPos: ast.Position{Offset: 204, Line: 11, Column: 25}, + StartPos: ast.Position{ + Offset: 222, + Line: 11, + Column: 24, + }, + EndPos: ast.Position{ + Offset: 223, + Line: 11, + Column: 25, + }, }, }, }, - StartPos: ast.Position{Offset: 193, Line: 11, Column: 14}, + DocString: "", + Identifier: ast.Identifier{ + Identifier: "destroy", + Pos: ast.Position{ + Offset: 212, + Line: 11, + Column: 14, + }, + }, + StartPos: ast.Position{ + Offset: 212, + Line: 11, + Column: 14, + }, + Access: ast.AccessNotSpecified, }, + Kind: 0xe, }, }, ), + Identifier: ast.Identifier{ + Identifier: "Test", + Pos: ast.Position{ + Offset: 28, + Line: 2, + Column: 27, + }, + }, Range: ast.Range{ - StartPos: ast.Position{Offset: 11, Line: 2, Column: 10}, - EndPos: ast.Position{Offset: 216, Line: 12, Column: 10}, + StartPos: ast.Position{ + Offset: 11, + Line: 2, + Column: 10, + }, + EndPos: ast.Position{ + Offset: 235, + Line: 12, + Column: 10, + }, }, + Access: ast.AccessNotSpecified, + CompositeKind: 0x1, }, }, result, @@ -4050,11 +4729,11 @@ func TestParseInterfaceDeclaration(t *testing.T) { }) t.Run("invalid interface name", func(t *testing.T) { - _, errs := testParseDeclarations(`pub struct interface continue {}`) + _, errs := testParseDeclarations(`access(all) struct interface continue {}`) utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ - Pos: ast.Position{Line: 1, Column: 21, Offset: 21}, + Pos: ast.Position{Line: 1, Column: 29, Offset: 29}, Message: "expected identifier following struct declaration, got keyword continue", }, }, errs) @@ -4122,7 +4801,7 @@ func TestParseEnumDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(" pub enum E { case c ; pub case d }") + result, errs := testParseDeclarations(" access(all) enum E { case c ; access(all) case d }") require.Empty(t, errs) utils.AssertEqualWithDiff(t, @@ -4132,7 +4811,7 @@ func TestParseEnumDeclaration(t *testing.T) { CompositeKind: common.CompositeKindEnum, Identifier: ast.Identifier{ Identifier: "E", - Pos: ast.Position{Line: 1, Column: 10, Offset: 10}, + Pos: ast.Position{Line: 1, Column: 18, Offset: 18}, }, Members: ast.NewUnmeteredMembers( []ast.Declaration{ @@ -4140,23 +4819,23 @@ func TestParseEnumDeclaration(t *testing.T) { Access: ast.AccessNotSpecified, Identifier: ast.Identifier{ Identifier: "c", - Pos: ast.Position{Line: 1, Column: 19, Offset: 19}, + Pos: ast.Position{Line: 1, Column: 27, Offset: 27}, }, - StartPos: ast.Position{Line: 1, Column: 14, Offset: 14}, + StartPos: ast.Position{Line: 1, Column: 22, Offset: 22}, }, &ast.EnumCaseDeclaration{ Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "d", - Pos: ast.Position{Line: 1, Column: 32, Offset: 32}, + Pos: ast.Position{Line: 1, Column: 48, Offset: 48}, }, - StartPos: ast.Position{Line: 1, Column: 23, Offset: 23}, + StartPos: ast.Position{Line: 1, Column: 31, Offset: 31}, }, }, ), Range: ast.Range{ StartPos: ast.Position{Line: 1, Column: 1, Offset: 1}, - EndPos: ast.Position{Line: 1, Column: 34, Offset: 34}, + EndPos: ast.Position{Line: 1, Column: 50, Offset: 50}, }, }, }, @@ -5181,13 +5860,13 @@ func TestParseStructure(t *testing.T) { const code = ` struct Test { - pub var foo: Int + access(all) var foo: Int init(foo: Int) { self.foo = foo } - pub fun getFoo(): Int { + access(all) fun getFoo(): Int { return self.foo } } @@ -5198,68 +5877,100 @@ func TestParseStructure(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.CompositeDeclaration{ - Access: ast.AccessNotSpecified, - CompositeKind: common.CompositeKindStructure, - Identifier: ast.Identifier{ - Identifier: "Test", - Pos: ast.Position{Offset: 16, Line: 2, Column: 15}, - }, Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.FieldDeclaration{ - Access: ast.AccessAll, - VariableKind: ast.VariableKindVariable, - Identifier: ast.Identifier{ - Identifier: "foo", - Pos: ast.Position{Offset: 48, Line: 3, Column: 25}, - }, TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 53, Line: 3, Column: 30}, + Pos: ast.Position{ + Offset: 56, + Line: 3, + Column: 33, + }, }, }, - StartPos: ast.Position{Offset: 53, Line: 3, Column: 30}, + StartPos: ast.Position{ + Offset: 56, + Line: 3, + Column: 33, + }, + IsResource: false, + }, + DocString: "", + Identifier: ast.Identifier{ + Identifier: "foo", + Pos: ast.Position{ + Offset: 51, + Line: 3, + Column: 28, + }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 35, Line: 3, Column: 12}, - EndPos: ast.Position{Offset: 55, Line: 3, Column: 32}, + StartPos: ast.Position{ + Offset: 35, + Line: 3, + Column: 12, + }, + EndPos: ast.Position{ + Offset: 58, + Line: 3, + Column: 35, + }, }, + Access: ast.AccessAll, + VariableKind: 0x1, }, &ast.SpecialFunctionDeclaration{ - Kind: common.DeclarationKindInitializer, FunctionDeclaration: &ast.FunctionDeclaration{ - Access: ast.AccessNotSpecified, - Identifier: ast.Identifier{ - Identifier: "init", - Pos: ast.Position{Offset: 70, Line: 5, Column: 12}, - }, ParameterList: &ast.ParameterList{ Parameters: []*ast.Parameter{ { - Label: "", - Identifier: ast.Identifier{ - Identifier: "foo", - Pos: ast.Position{Offset: 75, Line: 5, Column: 17}, - }, TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 80, Line: 5, Column: 22}, + Pos: ast.Position{ + Offset: 83, + Line: 5, + Column: 22, + }, }, }, - StartPos: ast.Position{Offset: 80, Line: 5, Column: 22}, + StartPos: ast.Position{ + Offset: 83, + Line: 5, + Column: 22, + }, + IsResource: false, + }, + Identifier: ast.Identifier{ + Identifier: "foo", + Pos: ast.Position{ + Offset: 78, + Line: 5, + Column: 17, + }, + }, + StartPos: ast.Position{ + Offset: 78, + Line: 5, + Column: 17, }, - StartPos: ast.Position{Offset: 75, Line: 5, Column: 17}, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 74, Line: 5, Column: 16}, - EndPos: ast.Position{Offset: 83, Line: 5, Column: 25}, + StartPos: ast.Position{ + Offset: 77, + Line: 5, + Column: 16, + }, + EndPos: ast.Position{ + Offset: 86, + Line: 5, + Column: 25, + }, }, }, FunctionBlock: &ast.FunctionBlock{ @@ -5270,57 +5981,111 @@ func TestParseStructure(t *testing.T) { Expression: &ast.IdentifierExpression{ Identifier: ast.Identifier{ Identifier: "self", - Pos: ast.Position{Offset: 103, Line: 6, Column: 16}, + Pos: ast.Position{ + Offset: 106, + Line: 6, + Column: 16, + }, }, }, - AccessPos: ast.Position{Offset: 107, Line: 6, Column: 20}, Identifier: ast.Identifier{ Identifier: "foo", - Pos: ast.Position{Offset: 108, Line: 6, Column: 21}, + Pos: ast.Position{ + Offset: 111, + Line: 6, + Column: 21, + }, }, + AccessPos: ast.Position{ + Offset: 110, + Line: 6, + Column: 20, + }, + Optional: false, }, Transfer: &ast.Transfer{ - Operation: ast.TransferOperationCopy, - Pos: ast.Position{Offset: 112, Line: 6, Column: 25}, + Operation: 0x1, + Pos: ast.Position{ + Offset: 115, + Line: 6, + Column: 25, + }, }, Value: &ast.IdentifierExpression{ Identifier: ast.Identifier{ Identifier: "foo", - Pos: ast.Position{Offset: 114, Line: 6, Column: 27}, + Pos: ast.Position{ + Offset: 117, + Line: 6, + Column: 27, + }, }, }, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 85, Line: 5, Column: 27}, - EndPos: ast.Position{Offset: 130, Line: 7, Column: 12}, + StartPos: ast.Position{ + Offset: 88, + Line: 5, + Column: 27, + }, + EndPos: ast.Position{ + Offset: 133, + Line: 7, + Column: 12, + }, }, }, }, - StartPos: ast.Position{Offset: 70, Line: 5, Column: 12}, + Identifier: ast.Identifier{ + Identifier: "init", + Pos: ast.Position{ + Offset: 73, + Line: 5, + Column: 12, + }, + }, + StartPos: ast.Position{ + Offset: 73, + Line: 5, + Column: 12, + }, + Access: ast.AccessNotSpecified, }, + Kind: 0xd, }, &ast.FunctionDeclaration{ - Access: ast.AccessAll, - Identifier: ast.Identifier{ - Identifier: "getFoo", - Pos: ast.Position{Offset: 153, Line: 9, Column: 20}, - }, ParameterList: &ast.ParameterList{ Range: ast.Range{ - StartPos: ast.Position{Offset: 159, Line: 9, Column: 26}, - EndPos: ast.Position{Offset: 160, Line: 9, Column: 27}, + StartPos: ast.Position{ + Offset: 170, + Line: 9, + Column: 34, + }, + EndPos: ast.Position{ + Offset: 171, + Line: 9, + Column: 35, + }, }, }, ReturnTypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int", - Pos: ast.Position{Offset: 163, Line: 9, Column: 30}, + Pos: ast.Position{ + Offset: 174, + Line: 9, + Column: 38, + }, }, }, - StartPos: ast.Position{Offset: 163, Line: 9, Column: 30}, + StartPos: ast.Position{ + Offset: 174, + Line: 9, + Column: 38, + }, + IsResource: false, }, FunctionBlock: &ast.FunctionBlock{ Block: &ast.Block{ @@ -5330,35 +6095,96 @@ func TestParseStructure(t *testing.T) { Expression: &ast.IdentifierExpression{ Identifier: ast.Identifier{ Identifier: "self", - Pos: ast.Position{Offset: 192, Line: 10, Column: 23}, + Pos: ast.Position{ + Offset: 203, + Line: 10, + Column: 23, + }, }, }, - AccessPos: ast.Position{Offset: 196, Line: 10, Column: 27}, Identifier: ast.Identifier{ Identifier: "foo", - Pos: ast.Position{Offset: 197, Line: 10, Column: 28}, + Pos: ast.Position{ + Offset: 208, + Line: 10, + Column: 28, + }, }, + AccessPos: ast.Position{ + Offset: 207, + Line: 10, + Column: 27, + }, + Optional: false, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 185, Line: 10, Column: 16}, - EndPos: ast.Position{Offset: 199, Line: 10, Column: 30}, + StartPos: ast.Position{ + Offset: 196, + Line: 10, + Column: 16, + }, + EndPos: ast.Position{ + Offset: 210, + Line: 10, + Column: 30, + }, }, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 167, Line: 9, Column: 34}, - EndPos: ast.Position{Offset: 213, Line: 11, Column: 12}, + StartPos: ast.Position{ + Offset: 178, + Line: 9, + Column: 42, + }, + EndPos: ast.Position{ + Offset: 224, + Line: 11, + Column: 12, + }, }, }, }, - StartPos: ast.Position{Offset: 145, Line: 9, Column: 12}, + Identifier: ast.Identifier{ + Identifier: "getFoo", + Pos: ast.Position{ + Offset: 164, + Line: 9, + Column: 28, + }, + }, + StartPos: ast.Position{ + Offset: 148, + Line: 9, + Column: 12, + }, + Access: ast.AccessAll, + Flags: 0x00, }, }, ), + Identifier: ast.Identifier{ + Identifier: "Test", + Pos: ast.Position{ + Offset: 16, + Line: 2, + Column: 15, + }, + }, Range: ast.Range{ - StartPos: ast.Position{Offset: 9, Line: 2, Column: 8}, - EndPos: ast.Position{Offset: 223, Line: 12, Column: 8}, + StartPos: ast.Position{ + Offset: 9, + Line: 2, + Column: 8, + }, + EndPos: ast.Position{ + Offset: 234, + Line: 12, + Column: 8, + }, }, + Access: ast.AccessNotSpecified, + CompositeKind: 0x1, }, }, result.Declarations(), @@ -7162,7 +7988,7 @@ func TestParseInvalidAccessModifiers(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations("pub #test") + _, errs := testParseDeclarations("access(all) #test") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ @@ -7178,7 +8004,7 @@ func TestParseInvalidAccessModifiers(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations("pub transaction {}") + _, errs := testParseDeclarations("access(all) transaction {}") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ @@ -7194,12 +8020,12 @@ func TestParseInvalidAccessModifiers(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations("pub priv let x = 1") + _, errs := testParseDeclarations("access(all) access(self) let x = 1") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "invalid second access modifier", - Pos: ast.Position{Offset: 4, Line: 1, Column: 4}, + Pos: ast.Position{Offset: 12, Line: 1, Column: 12}, }, }, errs, @@ -7740,11 +8566,11 @@ func TestParseNestedPragma(t *testing.T) { ) }) - t.Run("pub", func(t *testing.T) { + t.Run("access(all)", func(t *testing.T) { t.Parallel() - _, errs := parse("pub #pragma", Config{}) + _, errs := parse("access(all) #pragma", Config{}) utils.AssertEqualWithDiff(t, []error{ @@ -7757,12 +8583,12 @@ func TestParseNestedPragma(t *testing.T) { ) }) - t.Run("pub static native, enabled", func(t *testing.T) { + t.Run("access(all) static native, enabled", func(t *testing.T) { t.Parallel() _, errs := parse( - "pub static native #pragma", + "access(all) static native #pragma", Config{ StaticModifierEnabled: true, NativeModifierEnabled: true, @@ -7779,17 +8605,17 @@ func TestParseNestedPragma(t *testing.T) { ) }) - t.Run("pub static native, disabled", func(t *testing.T) { + t.Run("access(all) static native, disabled", func(t *testing.T) { t.Parallel() - _, errs := parse("pub static native #pragma", Config{}) + _, errs := parse("access(all) static native #pragma", Config{}) utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "unexpected identifier", - Pos: ast.Position{Offset: 4, Line: 1, Column: 4}, + Pos: ast.Position{Offset: 12, Line: 1, Column: 12}, }, }, errs, @@ -7806,7 +8632,7 @@ func TestParseEntitlementDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(" pub entitlement E ") + result, errs := testParseDeclarations(" access(all) entitlement E ") require.Empty(t, errs) utils.AssertEqualWithDiff(t, @@ -7815,11 +8641,11 @@ func TestParseEntitlementDeclaration(t *testing.T) { Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", - Pos: ast.Position{Line: 1, Column: 17, Offset: 17}, + Pos: ast.Position{Line: 1, Column: 25, Offset: 25}, }, Range: ast.Range{ StartPos: ast.Position{Line: 1, Column: 1, Offset: 1}, - EndPos: ast.Position{Line: 1, Column: 17, Offset: 17}, + EndPos: ast.Position{Line: 1, Column: 25, Offset: 25}, }, }, }, @@ -7834,8 +8660,8 @@ func TestParseEntitlementDeclaration(t *testing.T) { // at static checking time, all entitlements nested inside non-contract-kinded composites // will be rejected result, errs := testParseDeclarations(` - pub contract C { - pub entitlement E + access(all) contract C { + access(all) entitlement E } `) require.Empty(t, errs) @@ -7843,31 +8669,55 @@ func TestParseEntitlementDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.CompositeDeclaration{ - Access: ast.AccessAll, - CompositeKind: common.CompositeKindContract, - Identifier: ast.Identifier{ - Identifier: "C", - Pos: ast.Position{Line: 2, Column: 25, Offset: 26}, - }, - Range: ast.Range{ - StartPos: ast.Position{Line: 2, Column: 12, Offset: 13}, - EndPos: ast.Position{Line: 4, Column: 12, Offset: 77}, - }, Members: ast.NewUnmeteredMembers( []ast.Declaration{ &ast.EntitlementDeclaration{ Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "E", - Pos: ast.Position{Line: 3, Column: 32, Offset: 63}, + Pos: ast.Position{ + Offset: 79, + Line: 3, + Column: 40, + }, }, Range: ast.Range{ - StartPos: ast.Position{Line: 3, Column: 16, Offset: 47}, - EndPos: ast.Position{Line: 3, Column: 32, Offset: 63}, + StartPos: ast.Position{ + Offset: 55, + Line: 3, + Column: 16, + }, + EndPos: ast.Position{ + Offset: 79, + Line: 3, + Column: 40, + }, }, }, }, ), + Identifier: ast.Identifier{ + Identifier: "C", + Pos: ast.Position{ + Offset: 34, + Line: 2, + Column: 33, + }, + }, + Range: ast.Range{ + StartPos: ast.Position{ + Offset: 13, + Line: 2, + Column: 12, + }, + EndPos: ast.Position{ + Offset: 93, + Line: 4, + Column: 12, + }, + }, + Access: ast.AccessAll, + CompositeKind: 0x3, }, }, result, @@ -7878,12 +8728,12 @@ func TestParseEntitlementDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(" pub entitlement") + _, errs := testParseDeclarations(" access(all) entitlement") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "expected identifier, got EOF", - Pos: ast.Position{Offset: 16, Line: 1, Column: 16}, + Pos: ast.Position{Offset: 24, Line: 1, Column: 24}, }, }, errs, @@ -7894,12 +8744,12 @@ func TestParseEntitlementDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(" pub view entitlement E") + _, errs := testParseDeclarations(" access(all) view entitlement E") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "invalid view modifier for entitlement", - Pos: ast.Position{Offset: 5, Line: 1, Column: 5}, + Pos: ast.Position{Offset: 13, Line: 1, Column: 13}, }, }, errs, @@ -8142,7 +8992,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(" pub entitlement mapping M { } ") + result, errs := testParseDeclarations(" access(all) entitlement mapping M { } ") require.Empty(t, errs) utils.AssertEqualWithDiff(t, @@ -8151,11 +9001,11 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "M", - Pos: ast.Position{Line: 1, Column: 25, Offset: 25}, + Pos: ast.Position{Line: 1, Column: 33, Offset: 33}, }, Range: ast.Range{ StartPos: ast.Position{Line: 1, Column: 1, Offset: 1}, - EndPos: ast.Position{Line: 1, Column: 29, Offset: 29}, + EndPos: ast.Position{Line: 1, Column: 37, Offset: 37}, }, }, }, @@ -8167,7 +9017,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(` pub entitlement mapping M { + result, errs := testParseDeclarations(` access(all) entitlement mapping M { A -> B C -> D } `) @@ -8176,45 +9026,73 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.EntitlementMappingDeclaration{ - Access: ast.AccessAll, + Access: ast.AccessAll, + DocString: "", Identifier: ast.Identifier{ Identifier: "M", - Pos: ast.Position{Line: 1, Column: 25, Offset: 25}, - }, - Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 1, Offset: 1}, - EndPos: ast.Position{Line: 4, Column: 2, Offset: 52}, + Pos: ast.Position{ + Offset: 33, + Line: 1, + Column: 33, + }, }, Associations: []*ast.EntitlementMapElement{ { Input: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "A", - Pos: ast.Position{Line: 2, Column: 3, Offset: 33}, + Pos: ast.Position{ + Offset: 41, + Line: 2, + Column: 3, + }, }, }, Output: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "B", - Pos: ast.Position{Line: 2, Column: 8, Offset: 38}, + Pos: ast.Position{ + Offset: 46, + Line: 2, + Column: 8, + }, }, }, - }, - { + }, { Input: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "C", - Pos: ast.Position{Line: 3, Column: 3, Offset: 43}, + Pos: ast.Position{ + Offset: 51, + Line: 3, + Column: 3, + }, }, }, Output: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "D", - Pos: ast.Position{Line: 3, Column: 8, Offset: 48}, + Pos: ast.Position{ + Offset: 56, + Line: 3, + Column: 8, + }, }, }, }, }, + Range: ast.Range{ + StartPos: ast.Position{ + Offset: 1, + Line: 1, + Column: 1, + }, + EndPos: ast.Position{ + Offset: 60, + Line: 4, + Column: 2, + }, + }, }, }, result, @@ -8225,7 +9103,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - result, errs := testParseDeclarations(` pub entitlement mapping M { + result, errs := testParseDeclarations(` access(all) entitlement mapping M { A -> B C -> D } `) require.Empty(t, errs) @@ -8236,24 +9114,32 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { Access: ast.AccessAll, Identifier: ast.Identifier{ Identifier: "M", - Pos: ast.Position{Line: 1, Column: 25, Offset: 25}, - }, - Range: ast.Range{ - StartPos: ast.Position{Line: 1, Column: 1, Offset: 1}, - EndPos: ast.Position{Line: 3, Column: 2, Offset: 49}, + Pos: ast.Position{ + Offset: 33, + Line: 1, + Column: 33, + }, }, Associations: []*ast.EntitlementMapElement{ { Input: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "A", - Pos: ast.Position{Line: 2, Column: 3, Offset: 33}, + Pos: ast.Position{ + Offset: 41, + Line: 2, + Column: 3, + }, }, }, Output: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "B", - Pos: ast.Position{Line: 2, Column: 8, Offset: 38}, + Pos: ast.Position{ + Offset: 46, + Line: 2, + Column: 8, + }, }, }, }, @@ -8261,17 +9147,37 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { Input: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "C", - Pos: ast.Position{Line: 2, Column: 10, Offset: 40}, + Pos: ast.Position{ + Offset: 48, + Line: 2, + Column: 10, + }, }, }, Output: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "D", - Pos: ast.Position{Line: 2, Column: 15, Offset: 45}, + Pos: ast.Position{ + Offset: 53, + Line: 2, + Column: 15, + }, }, }, }, }, + Range: ast.Range{ + StartPos: ast.Position{ + Offset: 1, + Line: 1, + Column: 1, + }, + EndPos: ast.Position{ + Offset: 57, + Line: 3, + Column: 2, + }, + }, }, }, result, @@ -8282,12 +9188,12 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(" pub mapping M {} ") + _, errs := testParseDeclarations(" access(all) mapping M {} ") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "unexpected token: identifier", - Pos: ast.Position{Offset: 5, Line: 1, Column: 5}, + Pos: ast.Position{Offset: 13, Line: 1, Column: 13}, }, }, errs, @@ -8298,12 +9204,12 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(" pub entitlement M {} ") + _, errs := testParseDeclarations(" access(all) entitlement M {} ") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "unexpected token: '{'", - Pos: ast.Position{Offset: 19, Line: 1, Column: 19}, + Pos: ast.Position{Offset: 27, Line: 1, Column: 27}, }, }, errs, @@ -8314,12 +9220,12 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(" pub entitlement mapping M ") + _, errs := testParseDeclarations(" access(all) entitlement mapping M ") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "expected token '{'", - Pos: ast.Position{Offset: 27, Line: 1, Column: 27}, + Pos: ast.Position{Offset: 35, Line: 1, Column: 35}, }, }, errs, @@ -8330,12 +9236,12 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(" pub entitlement mapping M {") + _, errs := testParseDeclarations(" access(all) entitlement mapping M {") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "expected token '}'", - Pos: ast.Position{Offset: 28, Line: 1, Column: 28}, + Pos: ast.Position{Offset: 36, Line: 1, Column: 36}, }, }, errs, @@ -8346,12 +9252,12 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(" pub entitlement mapping M }") + _, errs := testParseDeclarations(" access(all) entitlement mapping M }") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "expected token '{'", - Pos: ast.Position{Offset: 27, Line: 1, Column: 27}, + Pos: ast.Position{Offset: 35, Line: 1, Column: 35}, }, }, errs, @@ -8362,12 +9268,12 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(" pub entitlement mapping {}") + _, errs := testParseDeclarations(" access(all) entitlement mapping {}") utils.AssertEqualWithDiff(t, []error{ &SyntaxError{ Message: "expected identifier following entitlement mapping declaration, got '{'", - Pos: ast.Position{Offset: 25, Line: 1, Column: 25}, + Pos: ast.Position{Offset: 33, Line: 1, Column: 33}, }, }, errs, @@ -8378,7 +9284,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(` pub entitlement mapping M { + _, errs := testParseDeclarations(` access(all) entitlement mapping M { &A -> B } `) @@ -8386,7 +9292,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { []error{ &SyntaxError{ Message: "expected nominal type, got &A", - Pos: ast.Position{Offset: 35, Line: 2, Column: 5}, + Pos: ast.Position{Offset: 43, Line: 2, Column: 5}, }, }, errs, @@ -8397,7 +9303,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(` pub entitlement mapping M { + _, errs := testParseDeclarations(` access(all) entitlement mapping M { A -> [B] } `) @@ -8405,7 +9311,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { []error{ &SyntaxError{ Message: "expected nominal type, got [B]", - Pos: ast.Position{Offset: 41, Line: 2, Column: 11}, + Pos: ast.Position{Offset: 49, Line: 2, Column: 11}, }, }, errs, @@ -8416,7 +9322,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(` pub entitlement mapping M { + _, errs := testParseDeclarations(` access(all) entitlement mapping M { A B } `) @@ -8424,7 +9330,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { []error{ &SyntaxError{ Message: "expected token '->'", - Pos: ast.Position{Offset: 35, Line: 2, Column: 5}, + Pos: ast.Position{Offset: 43, Line: 2, Column: 5}, }, }, errs, @@ -8435,7 +9341,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { t.Parallel() - _, errs := testParseDeclarations(` pub entitlement mapping M { + _, errs := testParseDeclarations(` access(all) entitlement mapping M { A - B } `) @@ -8443,7 +9349,7 @@ func TestParseEntitlementMappingDeclaration(t *testing.T) { []error{ &SyntaxError{ Message: "expected token '->'", - Pos: ast.Position{Offset: 35, Line: 2, Column: 5}, + Pos: ast.Position{Offset: 43, Line: 2, Column: 5}, }, }, errs, diff --git a/runtime/tests/utils/utils.go b/runtime/tests/utils/utils.go index c630385a63..abeb26bd57 100644 --- a/runtime/tests/utils/utils.go +++ b/runtime/tests/utils/utils.go @@ -25,6 +25,7 @@ import ( "testing" "github.com/go-test/deep" + "github.com/k0kubun/pp" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -34,6 +35,10 @@ import ( "github.com/onflow/cadence/runtime/common" ) +func init() { + pp.ColoringEnabled = false +} + // TestLocation is used as the default location for programs in tests. const TestLocation = common.StringLocation("test") @@ -70,8 +75,8 @@ func AssertEqualWithDiff(t *testing.T, expected, actual any) { "expected: %s\n"+ "actual : %s\n\n"+ "%s", - expected, - actual, + pp.Sprint(expected), + pp.Sprint(actual), s.String(), ) } From 9c822adbfc78d28aa57c0e508a6e9c018f59c748 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Tue, 6 Jun 2023 13:53:38 -0400 Subject: [PATCH 04/20] update parser tests --- runtime/parser/benchmark_test.go | 30 ++-- runtime/parser/parser_test.go | 8 +- runtime/parser/type_test.go | 261 ++++++++++++++++++++++++------- 3 files changed, 221 insertions(+), 78 deletions(-) diff --git a/runtime/parser/benchmark_test.go b/runtime/parser/benchmark_test.go index 3cb32aecc4..13ee5d8689 100644 --- a/runtime/parser/benchmark_test.go +++ b/runtime/parser/benchmark_test.go @@ -90,10 +90,10 @@ func BenchmarkParseDeploy(b *testing.B) { } const fungibleTokenContract = ` -pub contract FungibleToken { +access(all) contract FungibleToken { - pub resource interface Provider { - pub fun withdraw(amount: Int): @Vault { + access(all) resource interface Provider { + access(all) fun withdraw(amount: Int): @Vault { pre { amount > 0: "Withdrawal amount must be positive" @@ -105,8 +105,8 @@ pub contract FungibleToken { } } - pub resource interface Receiver { - pub balance: Int + access(all) resource interface Receiver { + access(all) balance: Int init(balance: Int) { pre { @@ -119,7 +119,7 @@ pub contract FungibleToken { } } - pub fun deposit(from: @Receiver) { + access(all) fun deposit(from: @Receiver) { pre { from.balance > 0: "Deposit balance needs to be positive!" @@ -131,21 +131,21 @@ pub contract FungibleToken { } } - pub resource Vault: Provider, Receiver { + access(all) resource Vault: Provider, Receiver { - pub var balance: Int + access(all) var balance: Int init(balance: Int) { self.balance = balance } - pub fun withdraw(amount: Int): @Vault { + access(all) fun withdraw(amount: Int): @Vault { self.balance = self.balance - amount return <-create Vault(balance: amount) } // transfer combines withdraw and deposit into one function call - pub fun transfer(to: &Receiver, amount: Int) { + access(all) fun transfer(to: &Receiver, amount: Int) { pre { amount <= self.balance: "Insufficient funds" @@ -157,22 +157,22 @@ pub contract FungibleToken { to.deposit(from: <-self.withdraw(amount: amount)) } - pub fun deposit(from: @Receiver) { + access(all) fun deposit(from: @Receiver) { self.balance = self.balance + from.balance destroy from } - pub fun createEmptyVault(): @Vault { + access(all) fun createEmptyVault(): @Vault { return <-create Vault(balance: 0) } } - pub fun createEmptyVault(): @Vault { + access(all) fun createEmptyVault(): @Vault { return <-create Vault(balance: 0) } - pub resource VaultMinter { - pub fun mintTokens(amount: Int, recipient: &Receiver) { + access(all) resource VaultMinter { + access(all) fun mintTokens(amount: Int, recipient: &Receiver) { recipient.deposit(from: <-create Vault(balance: amount)) } } diff --git a/runtime/parser/parser_test.go b/runtime/parser/parser_test.go index 4ebb853610..7e0799e3e1 100644 --- a/runtime/parser/parser_test.go +++ b/runtime/parser/parser_test.go @@ -552,9 +552,9 @@ func TestParseBuffering(t *testing.T) { t.Parallel() src := ` - pub struct interface Y {} - pub struct X : Y {} - pub fun main():String { + access(all) struct interface Y {} + access(all) struct X : Y {} + access(all) fun main():String { fun f(a:Bool, _:String):String { return _; } let S = 1 if false { @@ -576,7 +576,7 @@ func TestParseBuffering(t *testing.T) { src := ` transaction { } - pub fun main():String { + access(all) fun main():String { let A = 1 let B = 2 let C = 3 diff --git a/runtime/parser/type_test.go b/runtime/parser/type_test.go index c94c9bcb3f..eea4ad234e 100644 --- a/runtime/parser/type_test.go +++ b/runtime/parser/type_test.go @@ -1509,7 +1509,7 @@ func TestParseParametersAndArrayTypes(t *testing.T) { t.Parallel() const code = ` - pub fun test(a: Int32, b: [Int32; 2], c: [[Int32; 3]]): [[Int64]] {} + access(all) fun test(a: Int32, b: [Int32; 2], c: [[Int32; 3]]): [[Int64]] {} ` result, errs := testParseProgram(code) require.Empty(t, errs) @@ -1517,136 +1517,279 @@ func TestParseParametersAndArrayTypes(t *testing.T) { utils.AssertEqualWithDiff(t, []ast.Declaration{ &ast.FunctionDeclaration{ - Access: ast.AccessAll, - Identifier: ast.Identifier{ - Identifier: "test", - Pos: ast.Position{Offset: 11, Line: 2, Column: 10}, - }, ParameterList: &ast.ParameterList{ Parameters: []*ast.Parameter{ { - Identifier: ast.Identifier{ - Identifier: "a", - Pos: ast.Position{Offset: 16, Line: 2, Column: 15}, - }, TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int32", - Pos: ast.Position{Offset: 19, Line: 2, Column: 18}, + Pos: ast.Position{ + Offset: 27, + Line: 2, + Column: 26, + }, }, }, - StartPos: ast.Position{Offset: 19, Line: 2, Column: 18}, + StartPos: ast.Position{ + Offset: 27, + Line: 2, + Column: 26, + }, + IsResource: false, }, - StartPos: ast.Position{Offset: 16, Line: 2, Column: 15}, - }, - { + Label: "", Identifier: ast.Identifier{ - Identifier: "b", - Pos: ast.Position{Offset: 26, Line: 2, Column: 25}, + Identifier: "a", + Pos: ast.Position{ + Offset: 24, + Line: 2, + Column: 23, + }, + }, + StartPos: ast.Position{ + Offset: 24, + Line: 2, + Column: 23, }, + }, + { TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.ConstantSizedType{ Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int32", - Pos: ast.Position{Offset: 30, Line: 2, Column: 29}, + Pos: ast.Position{ + Offset: 38, + Line: 2, + Column: 37, + }, }, }, Size: &ast.IntegerExpression{ - PositiveLiteral: []byte("2"), - Value: big.NewInt(2), - Base: 10, + Value: big.NewInt(2), + PositiveLiteral: []uint8{ + 0x32, + }, Range: ast.Range{ - StartPos: ast.Position{Offset: 37, Line: 2, Column: 36}, - EndPos: ast.Position{Offset: 37, Line: 2, Column: 36}, + StartPos: ast.Position{ + Offset: 45, + Line: 2, + Column: 44, + }, + EndPos: ast.Position{ + Offset: 45, + Line: 2, + Column: 44, + }, }, + Base: 10, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 29, Line: 2, Column: 28}, - EndPos: ast.Position{Offset: 38, Line: 2, Column: 37}, + StartPos: ast.Position{ + Offset: 37, + Line: 2, + Column: 36, + }, + EndPos: ast.Position{ + Offset: 46, + Line: 2, + Column: 45, + }, }, }, - StartPos: ast.Position{Offset: 29, Line: 2, Column: 28}, + StartPos: ast.Position{ + Offset: 37, + Line: 2, + Column: 36, + }, + IsResource: false, }, - StartPos: ast.Position{Offset: 26, Line: 2, Column: 25}, - }, - { Identifier: ast.Identifier{ - Identifier: "c", - Pos: ast.Position{Offset: 41, Line: 2, Column: 40}, + Identifier: "b", + Pos: ast.Position{ + Offset: 34, + Line: 2, + Column: 33, + }, + }, + StartPos: ast.Position{ + Offset: 34, + Line: 2, + Column: 33, }, + }, + { TypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.VariableSizedType{ Type: &ast.ConstantSizedType{ Type: &ast.NominalType{ Identifier: ast.Identifier{ Identifier: "Int32", - Pos: ast.Position{Offset: 46, Line: 2, Column: 45}, + Pos: ast.Position{ + Offset: 54, + Line: 2, + Column: 53, + }, }, }, Size: &ast.IntegerExpression{ - PositiveLiteral: []byte("3"), - Value: big.NewInt(3), - Base: 10, + Value: big.NewInt(3), + PositiveLiteral: []uint8{ + 0x33, + }, Range: ast.Range{ - StartPos: ast.Position{Offset: 53, Line: 2, Column: 52}, - EndPos: ast.Position{Offset: 53, Line: 2, Column: 52}, + StartPos: ast.Position{ + Offset: 61, + Line: 2, + Column: 60, + }, + EndPos: ast.Position{ + Offset: 61, + Line: 2, + Column: 60, + }, }, + Base: 10, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 45, Line: 2, Column: 44}, - EndPos: ast.Position{Offset: 54, Line: 2, Column: 53}, + StartPos: ast.Position{ + Offset: 53, + Line: 2, + Column: 52, + }, + EndPos: ast.Position{ + Offset: 62, + Line: 2, + Column: 61, + }, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 44, Line: 2, Column: 43}, - EndPos: ast.Position{Offset: 55, Line: 2, Column: 54}, + StartPos: ast.Position{ + Offset: 52, + Line: 2, + Column: 51, + }, + EndPos: ast.Position{ + Offset: 63, + Line: 2, + Column: 62, + }, }, }, - StartPos: ast.Position{Offset: 44, Line: 2, Column: 43}, + StartPos: ast.Position{ + Offset: 52, + Line: 2, + Column: 51, + }, + IsResource: false, + }, + Identifier: ast.Identifier{ + Identifier: "c", + Pos: ast.Position{ + Offset: 49, + Line: 2, + Column: 48, + }, + }, + StartPos: ast.Position{ + Offset: 49, + Line: 2, + Column: 48, }, - StartPos: ast.Position{Offset: 41, Line: 2, Column: 40}, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 15, Line: 2, Column: 14}, - EndPos: ast.Position{Offset: 56, Line: 2, Column: 55}, + StartPos: ast.Position{ + Offset: 23, + Line: 2, + Column: 22, + }, + EndPos: ast.Position{ + Offset: 64, + Line: 2, + Column: 63, + }, }, }, ReturnTypeAnnotation: &ast.TypeAnnotation{ - IsResource: false, Type: &ast.VariableSizedType{ Type: &ast.VariableSizedType{ Type: &ast.NominalType{ - Identifier: ast.Identifier{Identifier: "Int64", - Pos: ast.Position{Offset: 61, Line: 2, Column: 60}, + Identifier: ast.Identifier{ + Identifier: "Int64", + Pos: ast.Position{ + Offset: 69, + Line: 2, + Column: 68, + }, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 60, Line: 2, Column: 59}, - EndPos: ast.Position{Offset: 66, Line: 2, Column: 65}, + StartPos: ast.Position{ + Offset: 68, + Line: 2, + Column: 67, + }, + EndPos: ast.Position{ + Offset: 74, + Line: 2, + Column: 73, + }, }, }, Range: ast.Range{ - StartPos: ast.Position{Offset: 59, Line: 2, Column: 58}, - EndPos: ast.Position{Offset: 67, Line: 2, Column: 66}, + StartPos: ast.Position{ + Offset: 67, + Line: 2, + Column: 66, + }, + EndPos: ast.Position{ + Offset: 75, + Line: 2, + Column: 74, + }, }, }, - StartPos: ast.Position{Offset: 59, Line: 2, Column: 58}, + StartPos: ast.Position{ + Offset: 67, + Line: 2, + Column: 66, + }, + IsResource: false, }, FunctionBlock: &ast.FunctionBlock{ Block: &ast.Block{ Range: ast.Range{ - StartPos: ast.Position{Offset: 69, Line: 2, Column: 68}, - EndPos: ast.Position{Offset: 70, Line: 2, Column: 69}, + StartPos: ast.Position{ + Offset: 77, + Line: 2, + Column: 76, + }, + EndPos: ast.Position{ + Offset: 78, + Line: 2, + Column: 77, + }, }, }, }, - StartPos: ast.Position{Offset: 3, Line: 2, Column: 2}, + Identifier: ast.Identifier{ + Identifier: "test", + Pos: ast.Position{ + Offset: 19, + Line: 2, + Column: 18, + }, + }, + StartPos: ast.Position{ + Offset: 3, + Line: 2, + Column: 2, + }, + Access: ast.AccessAll, + Flags: 0x00, }, }, result.Declarations(), From 6fd3f4b21ef8868e0f0ca8009264aca4847c4e24 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Tue, 6 Jun 2023 14:54:42 -0400 Subject: [PATCH 05/20] update runtime tests --- encoding/ccf/ccf_test.go | 18 +- runtime/account_test.go | 88 +- runtime/attachments_test.go | 74 +- runtime/contract_test.go | 36 +- runtime/contract_update_test.go | 20 +- runtime/contract_update_validation_test.go | 810 ++++++++-------- runtime/convertValues_test.go | 224 ++--- runtime/coverage_test.go | 54 +- runtime/crypto_test.go | 24 +- runtime/deployedcontract_test.go | 8 +- runtime/deployment_test.go | 38 +- runtime/entitlements_test.go | 48 +- runtime/error_test.go | 24 +- runtime/examples/importing/import.cdc | 2 +- runtime/examples/vault.cdc | 18 +- runtime/ft_test.go | 78 +- runtime/import_test.go | 8 +- .../imported_values_memory_metering_test.go | 56 +- runtime/missingmember_test.go | 878 +++++++++--------- runtime/nft_test.go | 226 ++--- runtime/predeclaredvalues_test.go | 6 +- runtime/program_params_validation_test.go | 112 +-- runtime/resource_duplicate_test.go | 20 +- runtime/resourcedictionary_test.go | 119 +-- runtime/rlp_test.go | 4 +- runtime/runtime_memory_metering_test.go | 62 +- runtime/runtime_test.go | 404 ++++---- runtime/sharedstate_test.go | 8 +- runtime/stdlib/contracts/crypto.cdc | 40 +- runtime/stdlib/contracts/test.cdc | 106 +-- runtime/storage_test.go | 222 ++--- runtime/type_test.go | 2 +- runtime/validation_test.go | 2 +- 33 files changed, 1942 insertions(+), 1897 deletions(-) diff --git a/encoding/ccf/ccf_test.go b/encoding/ccf/ccf_test.go index 3788a8a60a..3b170d75c8 100644 --- a/encoding/ccf/ccf_test.go +++ b/encoding/ccf/ccf_test.go @@ -12527,7 +12527,7 @@ func TestDeployedEvents(t *testing.T) { } func newFlowFeesFeesDeductedEventType() *cadence.EventType { - // pub event FeesDeducted(amount: UFix64, inclusionEffort: UFix64, executionEffort: UFix64) + // access(all) event FeesDeducted(amount: UFix64, inclusionEffort: UFix64, executionEffort: UFix64) address, _ := common.HexToAddress("f919ee77447b7497") location := common.NewAddressLocation(nil, address, "FlowFees") @@ -12571,7 +12571,7 @@ func createFlowFeesFeesDeductedEvent() cadence.Event { } func newFlowFeesTokensWithdrawnEventType() *cadence.EventType { - // pub event TokensWithdrawn(amount: UFix64) + // access(all) event TokensWithdrawn(amount: UFix64) address, _ := common.HexToAddress("f919ee77447b7497") location := common.NewAddressLocation(nil, address, "FlowFees") @@ -12603,7 +12603,7 @@ func createFlowFeesTokensWithdrawnEvent() cadence.Event { } func newFlowTokenTokensDepositedEventType() *cadence.EventType { - // pub event TokensDeposited(amount: UFix64, to: Address?) + // access(all) event TokensDeposited(amount: UFix64, to: Address?) address, _ := common.HexToAddress("1654653399040a61") location := common.NewAddressLocation(nil, address, "FlowToken") @@ -12661,7 +12661,7 @@ func createFlowTokenTokensDepositedEvent() cadence.Event { } func newFlowTokenTokensMintedEventType() *cadence.EventType { - // pub event TokensMinted(amount: UFix64) + // access(all) event TokensMinted(amount: UFix64) address, _ := common.HexToAddress("1654653399040a61") location := common.NewAddressLocation(nil, address, "FlowToken") @@ -12693,7 +12693,7 @@ func createFlowTokenTokensMintedEvent() cadence.Event { } func newFlowTokenTokensWithdrawnEventType() *cadence.EventType { - // pub event TokensWithdrawn(amount: UFix64, from: Address?) + // access(all) event TokensWithdrawn(amount: UFix64, from: Address?) address, _ := common.HexToAddress("1654653399040a61") location := common.NewAddressLocation(nil, address, "FlowToken") @@ -12735,7 +12735,7 @@ func createFlowTokenTokensWithdrawnEvent() cadence.Event { } func newFlowIDTableStakingDelegatorRewardsPaidEventType() *cadence.EventType { - // pub event DelegatorRewardsPaid(nodeID: String, delegatorID: UInt32, amount: UFix64) + // access(all) event DelegatorRewardsPaid(nodeID: String, delegatorID: UInt32, amount: UFix64) address, _ := common.HexToAddress("8624b52f9ddcd04a") location := common.NewAddressLocation(nil, address, "FlowIDTableStaking") @@ -12779,7 +12779,7 @@ func createFlowIDTableStakingDelegatorRewardsPaidEvent() cadence.Event { } func newFlowIDTableStakingEpochTotalRewardsPaidEventType() *cadence.EventType { - // pub event EpochTotalRewardsPaid(total: UFix64, fromFees: UFix64, minted: UFix64, feesBurned: UFix64) + // access(all) event EpochTotalRewardsPaid(total: UFix64, fromFees: UFix64, minted: UFix64, feesBurned: UFix64) address, _ := common.HexToAddress("8624b52f9ddcd04a") location := common.NewAddressLocation(nil, address, "FlowIDTableStaking") @@ -12829,7 +12829,7 @@ func createFlowIDTableStakingEpochTotalRewardsPaidEvent() cadence.Event { } func newFlowIDTableStakingNewWeeklyPayoutEventType() *cadence.EventType { - // pub event NewWeeklyPayout(newPayout: UFix64) + // access(all) event NewWeeklyPayout(newPayout: UFix64) address, _ := common.HexToAddress("8624b52f9ddcd04a") location := common.NewAddressLocation(nil, address, "FlowIDTableStaking") @@ -12861,7 +12861,7 @@ func createFlowIDTableStakingNewWeeklyPayoutEvent() cadence.Event { } func newFlowIDTableStakingRewardsPaidEventType() *cadence.EventType { - // pub event RewardsPaid(nodeID: String, amount: UFix64) + // access(all) event RewardsPaid(nodeID: String, amount: UFix64) address, _ := common.HexToAddress("8624b52f9ddcd04a") location := common.NewAddressLocation(nil, address, "FlowIDTableStaking") diff --git a/runtime/account_test.go b/runtime/account_test.go index 6c3496c2aa..31fb594392 100644 --- a/runtime/account_test.go +++ b/runtime/account_test.go @@ -46,7 +46,7 @@ func TestRuntimeAccountKeyConstructor(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): AccountKey { + access(all) fun main(): AccountKey { let key = AccountKey( PublicKey( publicKey: "0102".decodeHex(), @@ -87,7 +87,7 @@ func TestRuntimeReturnPublicAccount(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): PublicAccount { + access(all) fun main(): PublicAccount { let acc = getAccount(0x02) return acc } @@ -121,7 +121,7 @@ func TestRuntimeReturnAuthAccount(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): AuthAccount { + access(all) fun main(): AuthAccount { let acc = getAuthAccount(0x02) return acc } @@ -544,7 +544,7 @@ func TestRuntimePublicAccountKeys(t *testing.T) { testEnv := initTestEnv(accountKeyA, accountKeyB) test := accountKeyTestCase{ code: ` - pub fun main(): AccountKey? { + access(all) fun main(): AccountKey? { let acc = getAccount(0x02) return acc.keys.get(keyIndex: 0) } @@ -581,7 +581,7 @@ func TestRuntimePublicAccountKeys(t *testing.T) { test := accountKeyTestCase{ code: ` - pub fun main(): AccountKey? { + access(all) fun main(): AccountKey? { let acc = getAccount(0x02) return acc.keys.get(keyIndex: 1) } @@ -617,7 +617,7 @@ func TestRuntimePublicAccountKeys(t *testing.T) { test := accountKeyTestCase{ code: ` - pub fun main(): AccountKey? { + access(all) fun main(): AccountKey? { let acc = getAccount(0x02) return acc.keys.get(keyIndex: 4) } @@ -643,7 +643,7 @@ func TestRuntimePublicAccountKeys(t *testing.T) { test := accountKeyTestCase{ code: ` - pub fun main(): AccountKey? { + access(all) fun main(): AccountKey? { let acc = getAccount(0x02) var keys: PublicAccount.Keys = acc.keys return keys.get(keyIndex: 0) @@ -679,7 +679,7 @@ func TestRuntimePublicAccountKeys(t *testing.T) { test := accountKeyTestCase{ code: ` - pub fun main(): UInt64 { + access(all) fun main(): UInt64 { return getAccount(0x02).keys.count } `, @@ -699,7 +699,7 @@ func TestRuntimePublicAccountKeys(t *testing.T) { testEnv := initTestEnv(revokedAccountKeyA, accountKeyB) test := accountKeyTestCase{ code: ` - pub fun main() { + access(all) fun main() { getAccount(0x02).keys.forEach(fun(key: AccountKey): Bool { log(key.keyIndex) return true @@ -738,7 +738,7 @@ func TestRuntimeHashAlgorithm(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): [HashAlgorithm?] { + access(all) fun main(): [HashAlgorithm?] { var key1: HashAlgorithm? = HashAlgorithm.SHA3_256 var key2: HashAlgorithm? = HashAlgorithm(rawValue: 3) @@ -810,7 +810,7 @@ func TestRuntimeSignatureAlgorithm(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): [SignatureAlgorithm?] { + access(all) fun main(): [SignatureAlgorithm?] { var key1: SignatureAlgorithm? = SignatureAlgorithm.ECDSA_secp256k1 var key2: SignatureAlgorithm? = SignatureAlgorithm(rawValue: 2) @@ -1168,7 +1168,7 @@ func TestRuntimePublicKey(t *testing.T) { t.Parallel() script := ` - pub fun main(): PublicKey { + access(all) fun main(): PublicKey { let publicKey = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.ECDSA_P256 @@ -1207,7 +1207,7 @@ func TestRuntimePublicKey(t *testing.T) { t.Parallel() script := ` - pub fun main(): Bool { + access(all) fun main(): Bool { let publicKey = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.ECDSA_P256 @@ -1229,7 +1229,7 @@ func TestRuntimePublicKey(t *testing.T) { t.Parallel() script := ` - pub fun main(): PublicKey { + access(all) fun main(): PublicKey { let publicKey = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.ECDSA_P256 @@ -1279,7 +1279,7 @@ func TestRuntimePublicKey(t *testing.T) { for index := range storage.keys { script := fmt.Sprintf( ` - pub fun main(): PublicKey { + access(all) fun main(): PublicKey { // Get a public key from host env let acc = getAccount(0x02) let publicKey = acc.keys.get(keyIndex: %d)!.publicKey @@ -1311,7 +1311,7 @@ func TestRuntimePublicKey(t *testing.T) { t.Parallel() script := ` - pub fun main(): Bool { + access(all) fun main(): Bool { let publicKey = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.ECDSA_P256 @@ -1360,7 +1360,7 @@ func TestRuntimePublicKey(t *testing.T) { storage.keys = append(storage.keys, accountKeyA, accountKeyB) script := ` - pub fun main(): Bool { + access(all) fun main(): Bool { // Get a public key from host env let acc = getAccount(0x02) let publicKey = acc.keys.get(keyIndex: 0)!.publicKey @@ -1400,7 +1400,7 @@ func TestRuntimePublicKey(t *testing.T) { t.Parallel() script := ` - pub fun main(): PublicKey { + access(all) fun main(): PublicKey { let publicKey = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.ECDSA_P256 @@ -1432,7 +1432,7 @@ func TestRuntimePublicKey(t *testing.T) { t.Parallel() script := ` - pub fun main(): PublicKey { + access(all) fun main(): PublicKey { let publicKey = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.ECDSA_P256 @@ -1461,7 +1461,7 @@ func TestRuntimePublicKey(t *testing.T) { t.Parallel() script := ` - pub fun main(): PublicKey { + access(all) fun main(): PublicKey { let publicKey = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.ECDSA_P256 @@ -1624,9 +1624,9 @@ func TestAuthAccountContracts(t *testing.T) { err := rt.ExecuteTransaction( Script{ Source: DeploymentTransaction("HelloInterface", []byte(` - pub contract interface HelloInterface { + access(all) contract interface HelloInterface { - pub fun hello(): String + access(all) fun hello(): String } `)), }, @@ -1643,9 +1643,9 @@ func TestAuthAccountContracts(t *testing.T) { Source: DeploymentTransaction("Hello", []byte(` import HelloInterface from 0x42 - pub contract Hello: HelloInterface { + access(all) contract Hello: HelloInterface { - pub fun hello(): String { + access(all) fun hello(): String { return "Hello!" } } @@ -1717,9 +1717,9 @@ func TestAuthAccountContracts(t *testing.T) { err := rt.ExecuteTransaction( Script{ Source: DeploymentTransaction("HelloInterface", []byte(` - pub contract interface HelloInterface { + access(all) contract interface HelloInterface { - pub fun hello(): String + access(all) fun hello(): String } `)), }, @@ -1734,9 +1734,9 @@ func TestAuthAccountContracts(t *testing.T) { err = rt.ExecuteTransaction( Script{ Source: DeploymentTransaction("Hello", []byte(` - pub contract Hello { + access(all) contract Hello { - pub fun hello(): String { + access(all) fun hello(): String { return "Hello!" } } @@ -1940,7 +1940,7 @@ func TestPublicAccountContracts(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): [AnyStruct] { + access(all) fun main(): [AnyStruct] { let acc = getAccount(0x02) let deployedContract = acc.contracts.get(name: "foo") @@ -1998,7 +1998,7 @@ func TestPublicAccountContracts(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main() { + access(all) fun main() { let acc = getAccount(0x02) assert(acc.contracts.get(name: "foo") == nil) } @@ -2036,7 +2036,7 @@ func TestPublicAccountContracts(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): [String] { + access(all) fun main(): [String] { let acc = getAccount(0x02) return acc.contracts.names } @@ -2081,7 +2081,7 @@ func TestPublicAccountContracts(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): [String] { + access(all) fun main(): [String] { let acc = getAccount(0x02) acc.contracts.names[0] = "baz" return acc.contracts.names @@ -2117,7 +2117,7 @@ func TestPublicAccountContracts(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): [String] { + access(all) fun main(): [String] { let acc = getAccount(0x02) acc.contracts.names.append("baz") return acc.contracts.names @@ -2158,7 +2158,7 @@ func TestGetAuthAccount(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): UInt64 { + access(all) fun main(): UInt64 { let acc = getAuthAccount(0x02) return acc.storageUsed } @@ -2190,7 +2190,7 @@ func TestGetAuthAccount(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main() { + access(all) fun main() { let acc = getAuthAccount("") } `) @@ -2218,7 +2218,7 @@ func TestGetAuthAccount(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main() { + access(all) fun main() { let acc = getAuthAccount() } `) @@ -2246,7 +2246,7 @@ func TestGetAuthAccount(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main() { + access(all) fun main() { let acc = getAuthAccount(0x1, 0x2) } `) @@ -2618,9 +2618,9 @@ func TestRuntimeAccountLink(t *testing.T) { // should have no influence #allowAccountLinking - pub contract AccountLinker { + access(all) contract AccountLinker { - pub fun link(_ account: AuthAccount) { + access(all) fun link(_ account: AuthAccount) { account.linkAccount(/private/foo) } } @@ -2712,9 +2712,9 @@ func TestRuntimeAccountLink(t *testing.T) { Source: DeploymentTransaction( "AccountLinker", []byte(` - pub contract AccountLinker { + access(all) contract AccountLinker { - pub fun link(_ account: AuthAccount) { + access(all) fun link(_ account: AuthAccount) { account.linkAccount(/private/foo) } } @@ -2824,9 +2824,9 @@ func TestRuntimeAccountLink(t *testing.T) { Source: DeploymentTransaction( "AccountLinker", []byte(` - pub contract AccountLinker { + access(all) contract AccountLinker { - pub fun link(_ account: AuthAccount) { + access(all) fun link(_ account: AuthAccount) { account.linkAccount(/private/foo) } } @@ -2848,7 +2848,7 @@ func TestRuntimeAccountLink(t *testing.T) { import AccountLinker from 0x1 - pub fun main() { + access(all) fun main() { AccountLinker.link(getAuthAccount(0x1)) } `) diff --git a/runtime/attachments_test.go b/runtime/attachments_test.go index daa1bff141..9bfb3e0d76 100644 --- a/runtime/attachments_test.go +++ b/runtime/attachments_test.go @@ -46,18 +46,18 @@ func TestAccountAttachmentSaveAndLoad(t *testing.T) { accountCodes := map[Location][]byte{} deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub resource R { - pub fun foo(): Int { + access(all) contract Test { + access(all) resource R { + access(all) fun foo(): Int { return 3 } } - pub attachment A for R { - pub fun foo(): Int { + access(all) attachment A for R { + access(all) fun foo(): Int { return base.foo() } } - pub fun makeRWithA(): @R { + access(all) fun makeRWithA(): @R { return <- attach A() to <-create R() } } @@ -157,10 +157,10 @@ func TestAccountAttachmentExportFailure(t *testing.T) { accountCodes := map[Location][]byte{} deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub resource R {} - pub attachment A for R {} - pub fun makeRWithA(): @R { + access(all) contract Test { + access(all) resource R {} + access(all) attachment A for R {} + access(all) fun makeRWithA(): @R { return <- attach A() to <-create R() } } @@ -168,7 +168,7 @@ func TestAccountAttachmentExportFailure(t *testing.T) { script := []byte(` import Test from 0x1 - pub fun main(): &Test.A? { + access(all) fun main(): &Test.A? { let r <- Test.makeRWithA() let a = r[Test.A] destroy r @@ -237,10 +237,10 @@ func TestAccountAttachmentExport(t *testing.T) { accountCodes := map[Location][]byte{} deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub resource R {} - pub attachment A for R {} - pub fun makeRWithA(): @R { + access(all) contract Test { + access(all) resource R {} + access(all) attachment A for R {} + access(all) fun makeRWithA(): @R { return <- attach A() to <-create R() } } @@ -248,7 +248,7 @@ func TestAccountAttachmentExport(t *testing.T) { script := []byte(` import Test from 0x1 - pub fun main(): &Test.A? { + access(all) fun main(): &Test.A? { let r <- Test.makeRWithA() let authAccount = getAuthAccount(0x1) authAccount.save(<-r, to: /storage/foo) @@ -321,10 +321,10 @@ func TestAccountAttachedExport(t *testing.T) { accountCodes := map[Location][]byte{} deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub resource R {} - pub attachment A for R {} - pub fun makeRWithA(): @R { + access(all) contract Test { + access(all) resource R {} + access(all) attachment A for R {} + access(all) fun makeRWithA(): @R { return <- attach A() to <-create R() } } @@ -332,7 +332,7 @@ func TestAccountAttachedExport(t *testing.T) { script := []byte(` import Test from 0x1 - pub fun main(): @Test.R { + access(all) fun main(): @Test.R { return <-Test.makeRWithA() } `) @@ -402,21 +402,21 @@ func TestAccountAttachmentSaveAndBorrow(t *testing.T) { accountCodes := map[Location][]byte{} deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub resource interface I { - pub fun foo(): Int + access(all) contract Test { + access(all) resource interface I { + access(all) fun foo(): Int } - pub resource R: I { - pub fun foo(): Int { + access(all) resource R: I { + access(all) fun foo(): Int { return 3 } } - pub attachment A for I { - pub fun foo(): Int { + access(all) attachment A for I { + access(all) fun foo(): Int { return base.foo() } } - pub fun makeRWithA(): @R { + access(all) fun makeRWithA(): @R { return <- attach A() to <-create R() } } @@ -516,21 +516,21 @@ func TestAccountAttachmentCapability(t *testing.T) { accountCodes := map[Location][]byte{} deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub resource interface I { - pub fun foo(): Int + access(all) contract Test { + access(all) resource interface I { + access(all) fun foo(): Int } - pub resource R: I { - pub fun foo(): Int { + access(all) resource R: I { + access(all) fun foo(): Int { return 3 } } - pub attachment A for I { - pub fun foo(): Int { + access(all) attachment A for I { + access(all) fun foo(): Int { return base.foo() } } - pub fun makeRWithA(): @R { + access(all) fun makeRWithA(): @R { return <- attach A() to <-create R() } } diff --git a/runtime/contract_test.go b/runtime/contract_test.go index 07ea41f7ea..9d8c9a7d08 100644 --- a/runtime/contract_test.go +++ b/runtime/contract_test.go @@ -510,8 +510,8 @@ func TestRuntimeContract(t *testing.T) { t.Run("valid contract, correct name", func(t *testing.T) { test(t, testCase{ name: "Test", - code: `pub contract Test {}`, - code2: `pub contract Test { pub fun test() {} }`, + code: `access(all) contract Test {}`, + code2: `access(all) contract Test { access(all) fun test() {} }`, valid: true, isInterface: false, }) @@ -520,8 +520,8 @@ func TestRuntimeContract(t *testing.T) { t.Run("valid contract interface, correct name", func(t *testing.T) { test(t, testCase{ name: "Test", - code: `pub contract interface Test {}`, - code2: `pub contract interface Test { pub fun test() }`, + code: `access(all) contract interface Test {}`, + code2: `access(all) contract interface Test { access(all) fun test() }`, valid: true, isInterface: true, }) @@ -530,7 +530,7 @@ func TestRuntimeContract(t *testing.T) { t.Run("valid contract, wrong name", func(t *testing.T) { test(t, testCase{ name: "XYZ", - code: `pub contract Test {}`, + code: `access(all) contract Test {}`, valid: false, isInterface: false, }) @@ -539,7 +539,7 @@ func TestRuntimeContract(t *testing.T) { t.Run("valid contract interface, wrong name", func(t *testing.T) { test(t, testCase{ name: "XYZ", - code: `pub contract interface Test {}`, + code: `access(all) contract interface Test {}`, valid: false, isInterface: true, }) @@ -567,9 +567,9 @@ func TestRuntimeContract(t *testing.T) { test(t, testCase{ name: "Test", code: ` - pub contract Test {} + access(all) contract Test {} - pub contract Test2 {} + access(all) contract Test2 {} `, valid: false, isInterface: false, @@ -580,9 +580,9 @@ func TestRuntimeContract(t *testing.T) { test(t, testCase{ name: "Test", code: ` - pub contract interface Test {} + access(all) contract interface Test {} - pub contract interface Test2 {} + access(all) contract interface Test2 {} `, valid: false, isInterface: true, @@ -593,9 +593,9 @@ func TestRuntimeContract(t *testing.T) { test(t, testCase{ name: "Test", code: ` - pub contract Test {} + access(all) contract Test {} - pub contract interface Test2 {} + access(all) contract interface Test2 {} `, valid: false, isInterface: false, @@ -608,18 +608,18 @@ func TestRuntimeImportMultipleContracts(t *testing.T) { t.Parallel() contractA := ` - pub contract A { + access(all) contract A { - pub fun a(): Int { + access(all) fun a(): Int { return 1 } } ` contractB := ` - pub contract B { + access(all) contract B { - pub fun b(): Int { + access(all) fun b(): Int { return 2 } } @@ -628,9 +628,9 @@ func TestRuntimeImportMultipleContracts(t *testing.T) { contractC := ` import A, B from 0x1 - pub contract C { + access(all) contract C { - pub fun c(): Int { + access(all) fun c(): Int { return A.a() + B.b() } } diff --git a/runtime/contract_update_test.go b/runtime/contract_update_test.go index 24610c3d1b..9ac36a3258 100644 --- a/runtime/contract_update_test.go +++ b/runtime/contract_update_test.go @@ -104,15 +104,15 @@ func TestContractUpdateWithDependencies(t *testing.T) { nextTransactionLocation := newTransactionLocationGenerator() const fooContractV1 = ` - pub contract Foo { + access(all) contract Foo { init() {} - pub fun hello() {} + access(all) fun hello() {} } ` const barContractV1 = ` import Foo from 0x01 - pub contract Bar { + access(all) contract Bar { init() { Foo.hello() } @@ -120,16 +120,16 @@ func TestContractUpdateWithDependencies(t *testing.T) { ` const fooContractV2 = ` - pub contract Foo { + access(all) contract Foo { init() {} - pub fun hello(_ a: Int) {} + access(all) fun hello(_ a: Int) {} } ` const barContractV2 = ` import Foo from 0x01 - pub contract Bar { + access(all) contract Bar { init() { Foo.hello(5) } @@ -225,9 +225,9 @@ func TestContractUpdateWithPrecedingIdentifiers(t *testing.T) { } const fooContractV1 = ` - pub contract Foo { + access(all) contract Foo { // NOTE: invalid preceding identifier in member declaration - bar pub let foo: Int + bar access(all) let foo: Int init() { self.foo = 1 @@ -236,8 +236,8 @@ func TestContractUpdateWithPrecedingIdentifiers(t *testing.T) { ` const fooContractV2 = ` - pub contract Foo { - pub let foo: Int + access(all) contract Foo { + access(all) let foo: Int init() { self.foo = 1 diff --git a/runtime/contract_update_validation_test.go b/runtime/contract_update_validation_test.go index 837db9bf57..147dcc204f 100644 --- a/runtime/contract_update_validation_test.go +++ b/runtime/contract_update_validation_test.go @@ -155,8 +155,8 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub var a: String + access(all) contract Test { + access(all) var a: String init() { self.a = "hello" } @@ -164,8 +164,8 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { - pub var a: Int + access(all) contract Test { + access(all) var a: Int init() { self.a = 0 } @@ -184,8 +184,8 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub var a: String + access(all) contract Test { + access(all) var a: String init() { self.a = "hello" @@ -194,9 +194,9 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { - pub var a: String - pub var b: Int + access(all) contract Test { + access(all) var a: String + access(all) var b: Int init() { self.a = "hello" @@ -217,9 +217,9 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub var a: String - pub var b: Int + access(all) contract Test { + access(all) var a: String + access(all) var b: Int init() { self.a = "hello" @@ -229,8 +229,8 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { - pub var a: String + access(all) contract Test { + access(all) var a: String init() { self.a = "hello" @@ -247,17 +247,17 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub var a: @TestResource + access(all) var a: @TestResource init() { self.a <- create Test.TestResource() } - pub resource TestResource { + access(all) resource TestResource { - pub let b: Int + access(all) let b: Int init() { self.b = 1234 @@ -267,17 +267,17 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var a: @Test.TestResource + access(all) var a: @Test.TestResource init() { self.a <- create Test.TestResource() } - pub resource TestResource { + access(all) resource TestResource { - pub let b: String + access(all) let b: String init() { self.b = "string_1234" @@ -298,17 +298,17 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub var a: @TestResource + access(all) var a: @TestResource init() { self.a <- create Test.TestResource() } - pub resource TestResource { + access(all) resource TestResource { - pub var b: String + access(all) var b: String init() { self.b = "hello" @@ -318,18 +318,18 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var a: @Test.TestResource + access(all) var a: @Test.TestResource init() { self.a <- create Test.TestResource() } - pub resource TestResource { + access(all) resource TestResource { - pub var b: String - pub var c: Int + access(all) var b: String + access(all) var c: Int init() { self.b = "hello" @@ -351,17 +351,17 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub var x: [TestStruct; 1] + access(all) var x: [TestStruct; 1] init() { self.x = [TestStruct()] } - pub struct TestStruct { - pub let a: Int - pub var b: Int + access(all) struct TestStruct { + access(all) let a: Int + access(all) var b: Int init() { self.a = 123 @@ -372,17 +372,17 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var x: [TestStruct; 1] + access(all) var x: [TestStruct; 1] init() { self.x = [TestStruct()] } - pub struct TestStruct { - pub let a: Int - pub var b: String + access(all) struct TestStruct { + access(all) let a: Int + access(all) var b: String init() { self.a = 123 @@ -404,18 +404,18 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub var x: {String: Foo} + access(all) var x: {String: Foo} init() { self.x = { "foo" : Foo() } } - pub struct Foo { + access(all) struct Foo { - pub let a: Foo? - pub let b: Bar + access(all) let a: Foo? + access(all) let b: Bar init() { self.a = nil @@ -423,10 +423,10 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { } } - pub struct Bar { + access(all) struct Bar { - pub let c: Foo? - pub let d: Bar? + access(all) let c: Foo? + access(all) let d: Bar? init() { self.c = nil @@ -437,18 +437,18 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var x: {String: Foo} + access(all) var x: {String: Foo} init() { self.x = { "foo" : Foo() } } - pub struct Foo { + access(all) struct Foo { - pub let a: Foo? - pub let b: Bar + access(all) let a: Foo? + access(all) let b: Bar init() { self.a = nil @@ -456,10 +456,10 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { } } - pub struct Bar { + access(all) struct Bar { - pub let c: Foo? - pub let d: String + access(all) let c: Foo? + access(all) let d: String init() { self.c = nil @@ -481,18 +481,18 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub var x: Test.TestStruct - pub var y: TestStruct + access(all) var x: Test.TestStruct + access(all) var y: TestStruct init() { self.x = Test.TestStruct() self.y = TestStruct() } - pub struct TestStruct { - pub let a: Int + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -502,18 +502,18 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var x: TestStruct - pub var y: Test.TestStruct + access(all) var x: TestStruct + access(all) var y: Test.TestStruct init() { self.x = TestStruct() self.y = Test.TestStruct() } - pub struct TestStruct { - pub let a: Int + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -531,11 +531,11 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const importCode = ` - pub contract TestImport { + access(all) contract TestImport { - pub struct TestStruct { - pub let a: Int - pub var b: Int + access(all) struct TestStruct { + access(all) let a: Int + access(all) var b: Int init() { self.a = 123 @@ -553,9 +553,9 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { const oldCode = ` import TestImport from 0x42 - pub contract Test { + access(all) contract Test { - pub var x: TestImport.TestStruct + access(all) var x: TestImport.TestStruct init() { self.x = TestImport.TestStruct() @@ -564,17 +564,17 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var x: TestStruct + access(all) var x: TestStruct init() { self.x = TestStruct() } - pub struct TestStruct { - pub let a: Int - pub var b: Int + access(all) struct TestStruct { + access(all) let a: Int + access(all) var b: Int init() { self.a = 123 @@ -599,16 +599,16 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract interface Test { - pub var a: String - pub fun getA() : String + access(all) contract interface Test { + access(all) var a: String + access(all) fun getA() : String } ` const newCode = ` - pub contract interface Test { - pub var a: Int - pub fun getA() : Int + access(all) contract interface Test { + access(all) var a: Int + access(all) fun getA() : Int } ` @@ -624,22 +624,22 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract interface Test { - pub var a: String - pub fun getA() : String + access(all) contract interface Test { + access(all) var a: String + access(all) fun getA() : String } ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var a: String + access(all) var a: String init() { self.a = "hello" } - pub fun getA() : String { + access(all) fun getA() : String { return self.a } } @@ -663,24 +663,24 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub var a: String + access(all) var a: String init() { self.a = "hello" } - pub fun getA() : String { + access(all) fun getA() : String { return self.a } } ` const newCode = ` - pub contract interface Test { - pub var a: String - pub fun getA() : String + access(all) contract interface Test { + access(all) var a: String + access(all) fun getA() : String } ` @@ -702,34 +702,34 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub var x: UsedStruct + access(all) var x: UsedStruct init() { self.x = UsedStruct() } - pub struct UsedStruct { - pub let a: Int + access(all) struct UsedStruct { + access(all) let a: Int init() { self.a = 123 } - pub fun getA() : Int { + access(all) fun getA() : Int { return self.a } } - pub struct UnusedStruct { - pub let a: Int + access(all) struct UnusedStruct { + access(all) let a: Int init() { self.a = 123 } - pub fun getA() : Int { + access(all) fun getA() : Int { return self.a } } @@ -737,38 +737,38 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var x: UsedStruct + access(all) var x: UsedStruct init() { self.x = UsedStruct() } - pub struct UsedStruct { - pub let a: Int + access(all) struct UsedStruct { + access(all) let a: Int init() { self.a = 123 } - pub fun getA() : String { + access(all) fun getA() : String { return "hello_123" } - pub fun getA_new() : Int { + access(all) fun getA_new() : Int { return self.a } } - pub struct UnusedStruct { - pub let a: String + access(all) struct UnusedStruct { + access(all) let a: String init() { self.a = "string_456" } - pub fun getA() : String { + access(all) fun getA() : String { return self.a } } @@ -790,33 +790,33 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub var x: Foo + access(all) var x: Foo init() { self.x = Foo.up } - pub enum Foo: UInt8 { - pub case up - pub case down + access(all) enum Foo: UInt8 { + access(all) case up + access(all) case down } } ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var x: Foo + access(all) var x: Foo init() { self.x = Foo.up } - pub enum Foo: UInt128 { - pub case up - pub case down + access(all) enum Foo: UInt128 { + access(all) case up + access(all) case down } } ` @@ -833,33 +833,33 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub var x: AnyStruct{TestStruct}? + access(all) var x: AnyStruct{TestStruct}? init() { self.x = nil } - pub struct interface TestStruct { - pub let a: String - pub var b: Int + access(all) struct interface TestStruct { + access(all) let a: String + access(all) var b: Int } } ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var x: AnyStruct{TestStruct}? + access(all) var x: AnyStruct{TestStruct}? init() { self.x = nil } - pub struct interface TestStruct { - pub let a: Int - pub var b: Int + access(all) struct interface TestStruct { + access(all) let a: Int + access(all) var b: Int } } ` @@ -876,17 +876,17 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub struct interface TestStruct { - pub var a: Int + access(all) contract Test { + access(all) struct interface TestStruct { + access(all) var a: Int } } ` const newCode = ` - pub contract Test { - pub struct TestStruct { - pub let a: Int + access(all) contract Test { + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -913,14 +913,14 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { } ` const newCode = ` - pub contract Test { - pub struct TestStruct { - pub let a: Int + access(all) contract Test { + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -938,9 +938,9 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub struct TestStruct { - pub let a: Int + access(all) contract Test { + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -950,7 +950,7 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { + access(all) contract Test { } ` @@ -966,8 +966,8 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub var a: String + access(all) contract Test { + access(all) var a: String init() { self.a = "hello" } @@ -975,8 +975,8 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { - pub var b: Int + access(all) contract Test { + access(all) var b: Int init() { self.b = 0 } @@ -995,31 +995,31 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub var a: String + access(all) contract Test { + access(all) var a: String init() { self.a = "hello" } - pub struct interface TestStruct { - pub var a: Int + access(all) struct interface TestStruct { + access(all) var a: Int } } ` const newCode = ` - pub contract Test { - pub var a: Int - pub var b: String + access(all) contract Test { + access(all) var a: Int + access(all) var b: String init() { self.a = 0 self.b = "hello" } - pub struct TestStruct { - pub let a: Int + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -1053,31 +1053,31 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub var a: String + access(all) contract Test { + access(all) var a: String init() { self.a = "hello" } - pub struct interface TestStruct { - pub var a: Int + access(all) struct interface TestStruct { + access(all) var a: Int } } ` const newCode = ` - pub contract Test { - pub var a: Int - pub var b: String + access(all) contract Test { + access(all) var a: Int + access(all) var b: String init() { self.a = 0 self.b = "hello" } - pub struct TestStruct { - pub let a: Int + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -1090,22 +1090,22 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { RequireError(t, err) const expectedError = "error: mismatching field `a` in `Test`\n" + - " --> 0000000000000042.Test:3:27\n" + + " --> 0000000000000042.Test:3:35\n" + " |\n" + - "3 | pub var a: Int\n" + - " | ^^^ incompatible type annotations. expected `String`, found `Int`\n" + + "3 | access(all) var a: Int\n" + + " | ^^^ incompatible type annotations. expected `String`, found `Int`\n" + "\n" + "error: found new field `b` in `Test`\n" + - " --> 0000000000000042.Test:4:24\n" + + " --> 0000000000000042.Test:4:32\n" + " |\n" + - "4 | pub var b: String\n" + - " | ^\n" + + "4 | access(all) var b: String\n" + + " | ^\n" + "\n" + "error: trying to convert structure interface `TestStruct` to a structure\n" + - " --> 0000000000000042.Test:11:27\n" + + " --> 0000000000000042.Test:11:35\n" + " |\n" + - "11 | pub struct TestStruct {\n" + - " | ^^^^^^^^^^" + "11 | access(all) struct TestStruct {\n" + + " | ^^^^^^^^^^" require.Contains(t, err.Error(), expectedError) }) @@ -1115,16 +1115,16 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub var vault: Capability<&TestStruct>? + access(all) var vault: Capability<&TestStruct>? init() { self.vault = nil } - pub struct TestStruct { - pub let a: Int + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -1134,16 +1134,16 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var vault: Capability<&TestStruct>? + access(all) var vault: Capability<&TestStruct>? init() { self.vault = nil } - pub struct TestStruct { - pub let a: Int + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -1161,10 +1161,10 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub struct TestStruct { - pub let a: Int + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -1174,9 +1174,9 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub var add: fun(Int, Int): Int + access(all) var add: fun(Int, Int): Int init() { self.add = fun (a: Int, b: Int): Int { @@ -1184,8 +1184,8 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { } } - pub struct TestStruct { - pub let a: Int + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -1205,9 +1205,9 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const importCode = ` - pub contract TestImport { - pub struct interface AnInterface { - pub a: Int + access(all) contract TestImport { + access(all) struct interface AnInterface { + access(all) a: Int } } ` @@ -1219,16 +1219,16 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { const oldCode = ` import TestImport from 0x42 - pub contract Test { - pub struct TestStruct1 { - pub let a: Int + access(all) contract Test { + access(all) struct TestStruct1 { + access(all) let a: Int init() { self.a = 123 } } - pub struct TestStruct2: TestImport.AnInterface { - pub let a: Int + access(all) struct TestStruct2: TestImport.AnInterface { + access(all) let a: Int init() { self.a = 123 @@ -1240,18 +1240,18 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { const newCode = ` import TestImport from 0x42 - pub contract Test { + access(all) contract Test { - pub struct TestStruct2: TestImport.AnInterface { - pub let a: Int + access(all) struct TestStruct2: TestImport.AnInterface { + access(all) let a: Int init() { self.a = 123 } } - pub struct TestStruct1 { - pub let a: Int + access(all) struct TestStruct1 { + access(all) let a: Int init() { self.a = 123 } @@ -1271,33 +1271,33 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { // simple nominal type - pub var a: TestStruct + access(all) var a: TestStruct // qualified nominal type - pub var b: Test.TestStruct + access(all) var b: Test.TestStruct // optional type - pub var c: Int? + access(all) var c: Int? // variable sized type - pub var d: [Int] + access(all) var d: [Int] // constant sized type - pub var e: [Int; 2] + access(all) var e: [Int; 2] // dictionary type - pub var f: {Int: String} + access(all) var f: {Int: String} // restricted type - pub var g: {TestInterface} + access(all) var g: {TestInterface} // instantiation and reference types - pub var h: Capability<&TestStruct>? + access(all) var h: Capability<&TestStruct>? // function type - pub var i: Capability<&fun(Int, Int): Int>? + access(all) var i: Capability<&fun(Int, Int): Int>? init() { var count: Int = 567 @@ -1312,49 +1312,49 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { self.i = nil } - pub struct TestStruct:TestInterface { - pub let a: Int + access(all) struct TestStruct:TestInterface { + access(all) let a: Int init() { self.a = 123 } } - pub struct interface TestInterface { - pub let a: Int + access(all) struct interface TestInterface { + access(all) let a: Int } } ` const newCode = ` - pub contract Test { + access(all) contract Test { // function type - pub var i: Capability<&fun(Int, Int): Int>? + access(all) var i: Capability<&fun(Int, Int): Int>? // instantiation and reference types - pub var h: Capability<&TestStruct>? + access(all) var h: Capability<&TestStruct>? // restricted type - pub var g: {TestInterface} + access(all) var g: {TestInterface} // dictionary type - pub var f: {Int: String} + access(all) var f: {Int: String} // constant sized type - pub var e: [Int; 2] + access(all) var e: [Int; 2] // variable sized type - pub var d: [Int] + access(all) var d: [Int] // optional type - pub var c: Int? + access(all) var c: Int? // qualified nominal type - pub var b: Test.TestStruct + access(all) var b: Test.TestStruct // simple nominal type - pub var a: TestStruct + access(all) var a: TestStruct init() { var count: Int = 567 @@ -1369,15 +1369,15 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { self.i = nil } - pub struct TestStruct:TestInterface { - pub let a: Int + access(all) struct TestStruct:TestInterface { + access(all) let a: Int init() { self.a = 123 } } - pub struct interface TestInterface { - pub let a: Int + access(all) struct interface TestInterface { + access(all) let a: Int } } ` @@ -1391,13 +1391,13 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { // restricted type - pub var a: {TestInterface} - pub var b: {TestInterface} - pub var c: AnyStruct{TestInterface} - pub var d: AnyStruct{TestInterface} + access(all) var a: {TestInterface} + access(all) var b: {TestInterface} + access(all) var c: AnyStruct{TestInterface} + access(all) var d: AnyStruct{TestInterface} init() { var count: Int = 567 @@ -1407,25 +1407,25 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { self.d = TestStruct() } - pub struct TestStruct:TestInterface { - pub let a: Int + access(all) struct TestStruct:TestInterface { + access(all) let a: Int init() { self.a = 123 } } - pub struct interface TestInterface { - pub let a: Int + access(all) struct interface TestInterface { + access(all) let a: Int } } ` const newCode = ` - pub contract Test { - pub var a: {TestInterface} - pub var b: AnyStruct{TestInterface} - pub var c: {TestInterface} - pub var d: AnyStruct{TestInterface} + access(all) contract Test { + access(all) var a: {TestInterface} + access(all) var b: AnyStruct{TestInterface} + access(all) var c: {TestInterface} + access(all) var d: AnyStruct{TestInterface} init() { var count: Int = 567 @@ -1435,15 +1435,15 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { self.d = TestStruct() } - pub struct TestStruct:TestInterface { - pub let a: Int + access(all) struct TestStruct:TestInterface { + access(all) let a: Int init() { self.a = 123 } } - pub struct interface TestInterface { - pub let a: Int + access(all) struct interface TestInterface { + access(all) let a: Int } } ` @@ -1457,11 +1457,11 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { // restricted type - pub var a: TestStruct{TestInterface} - pub var b: {TestInterface} + access(all) var a: TestStruct{TestInterface} + access(all) var b: {TestInterface} init() { var count: Int = 567 @@ -1469,23 +1469,23 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { self.b = TestStruct() } - pub struct TestStruct:TestInterface { - pub let a: Int + access(all) struct TestStruct:TestInterface { + access(all) let a: Int init() { self.a = 123 } } - pub struct interface TestInterface { - pub let a: Int + access(all) struct interface TestInterface { + access(all) let a: Int } } ` const newCode = ` - pub contract Test { - pub var a: {TestInterface} - pub var b: TestStruct{TestInterface} + access(all) contract Test { + access(all) var a: {TestInterface} + access(all) var b: TestStruct{TestInterface} init() { var count: Int = 567 @@ -1493,15 +1493,15 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { self.b = TestStruct() } - pub struct TestStruct:TestInterface { - pub let a: Int + access(all) struct TestStruct:TestInterface { + access(all) let a: Int init() { self.a = 123 } } - pub struct interface TestInterface { - pub let a: Int + access(all) struct interface TestInterface { + access(all) let a: Int } } ` @@ -1509,12 +1509,12 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { err := testDeployAndUpdate(t, "Test", oldCode, newCode) RequireError(t, err) - assert.Contains(t, err.Error(), "pub var a: {TestInterface}"+ - "\n | ^^^^^^^^^^^^^^^ "+ + assert.Contains(t, err.Error(), "access(all) var a: {TestInterface}"+ + "\n | ^^^^^^^^^^^^^^^ "+ "incompatible type annotations. expected `TestStruct{TestInterface}`, found `{TestInterface}`") - assert.Contains(t, err.Error(), "pub var b: TestStruct{TestInterface}"+ - "\n | ^^^^^^^^^^^^^^^^^^^^^^^^^ "+ + assert.Contains(t, err.Error(), "access(all) var b: TestStruct{TestInterface}"+ + "\n | ^^^^^^^^^^^^^^^^^^^^^^^^^ "+ "incompatible type annotations. expected `{TestInterface}`, found `TestStruct{TestInterface}`") }) @@ -1523,19 +1523,19 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub enum Foo: UInt8 { - pub case up - pub case down + access(all) contract Test { + access(all) enum Foo: UInt8 { + access(all) case up + access(all) case down } } ` const newCode = ` - pub contract Test { - pub enum Foo: UInt8 { - pub case up - pub case down + access(all) contract Test { + access(all) enum Foo: UInt8 { + access(all) case up + access(all) case down } } ` @@ -1549,18 +1549,18 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub enum Foo: UInt8 { - pub case up - pub case down + access(all) contract Test { + access(all) enum Foo: UInt8 { + access(all) case up + access(all) case down } } ` const newCode = ` - pub contract Test { - pub enum Foo: UInt8 { - pub case up + access(all) contract Test { + access(all) enum Foo: UInt8 { + access(all) case up } } ` @@ -1577,20 +1577,20 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub enum Foo: UInt8 { - pub case up - pub case down + access(all) contract Test { + access(all) enum Foo: UInt8 { + access(all) case up + access(all) case down } } ` const newCode = ` - pub contract Test { - pub enum Foo: UInt8 { - pub case up - pub case down - pub case left + access(all) contract Test { + access(all) enum Foo: UInt8 { + access(all) case up + access(all) case down + access(all) case left } } ` @@ -1604,21 +1604,21 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub enum Foo: UInt8 { - pub case up - pub case down - pub case left + access(all) contract Test { + access(all) enum Foo: UInt8 { + access(all) case up + access(all) case down + access(all) case left } } ` const newCode = ` - pub contract Test { - pub enum Foo: UInt8 { - pub case down - pub case left - pub case up + access(all) contract Test { + access(all) enum Foo: UInt8 { + access(all) case down + access(all) case left + access(all) case up } } ` @@ -1642,11 +1642,11 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub struct TestStruct { - pub let a: Int - pub var b: Int + access(all) struct TestStruct { + access(all) let a: Int + access(all) var b: Int init() { self.a = 123 @@ -1657,7 +1657,7 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const updateCode1 = ` - pub contract Test { + access(all) contract Test { } ` @@ -1673,10 +1673,10 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { assertMissingDeclarationError(t, cause, "TestStruct") const updateCode2 = ` - pub contract Test { + access(all) contract Test { - pub struct TestStruct { - pub let a: String + access(all) struct TestStruct { + access(all) let a: String init() { self.a = "hello123" @@ -1697,11 +1697,11 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { + access(all) contract Test { - pub struct TestStruct { - pub let a: Int - pub var b: Int + access(all) struct TestStruct { + access(all) let a: Int + access(all) var b: Int init() { self.a = 123 @@ -1712,11 +1712,11 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { ` const newCode = ` - pub contract Test { + access(all) contract Test { - pub struct TestStructRenamed { - pub let a: Int - pub var b: Int + access(all) struct TestStructRenamed { + access(all) let a: Int + access(all) var b: Int init() { self.a = 123 @@ -1738,8 +1738,8 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const code = ` - pub contract Test { - pub enum TestEnum: Int { + access(all) contract Test { + access(all) enum TestEnum: Int { } } ` @@ -1753,8 +1753,8 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Run("Remove contract interface with enum", func(t *testing.T) { const code = ` - pub contract interface Test { - pub enum TestEnum: Int { + access(all) contract interface Test { + access(all) enum TestEnum: Int { } } ` @@ -1770,9 +1770,9 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const code = ` - pub contract Test { - pub struct TestStruct { - pub let a: Int + access(all) contract Test { + access(all) struct TestStruct { + access(all) let a: Int init() { self.a = 123 @@ -1790,14 +1790,14 @@ func TestRuntimeContractUpdateValidation(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub struct A {} - pub struct B {} + access(all) contract Test { + access(all) struct A {} + access(all) struct B {} } ` const newCode = ` - pub contract Test {} + access(all) contract Test {} ` // Errors reporting was previously non-deterministic, @@ -1948,36 +1948,36 @@ func TestRuntimeContractUpdateConformanceChanges(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub var a: Foo + access(all) contract Test { + access(all) var a: Foo init() { self.a = Foo() } - pub struct Foo { + access(all) struct Foo { init() {} } } ` const newCode = ` - pub contract Test { - pub var a: Foo + access(all) contract Test { + access(all) var a: Foo init() { self.a = Foo() } - pub struct Foo: Bar { + access(all) struct Foo: Bar { init() { } - pub fun getName(): String { + access(all) fun getName(): String { return "John" } } - pub struct interface Bar { - pub fun getName(): String + access(all) struct interface Bar { + access(all) fun getName(): String } } ` @@ -1991,35 +1991,35 @@ func TestRuntimeContractUpdateConformanceChanges(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub var a: Foo + access(all) contract Test { + access(all) var a: Foo init() { self.a = Foo() } - pub struct Foo { + access(all) struct Foo { init() {} } } ` const newCode = ` - pub contract Test { - pub var a: Foo + access(all) contract Test { + access(all) var a: Foo init() { self.a = Foo() } - pub struct Foo: Bar { - pub var name: String + access(all) struct Foo: Bar { + access(all) var name: String init() { self.name = "John" } } - pub struct interface Bar { - pub var name: String + access(all) struct interface Bar { + access(all) var name: String } } ` @@ -2037,33 +2037,33 @@ func TestRuntimeContractUpdateConformanceChanges(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub var a: Foo + access(all) contract Test { + access(all) var a: Foo init() { self.a = Foo() } - pub struct Foo: Bar { + access(all) struct Foo: Bar { init() {} } - pub struct interface Bar { + access(all) struct interface Bar { } } ` const newCode = ` - pub contract Test { - pub var a: Foo + access(all) contract Test { + access(all) var a: Foo init() { self.a = Foo() } - pub struct Foo { + access(all) struct Foo { init() {} } - pub struct interface Bar { + access(all) struct interface Bar { } } ` @@ -2081,39 +2081,39 @@ func TestRuntimeContractUpdateConformanceChanges(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub var a: Foo + access(all) contract Test { + access(all) var a: Foo init() { self.a = Foo() } - pub struct Foo: First, Second { + access(all) struct Foo: First, Second { init() {} } - pub struct interface First { + access(all) struct interface First { } - pub struct interface Second { + access(all) struct interface Second { } } ` const newCode = ` - pub contract Test { - pub var a: Foo + access(all) contract Test { + access(all) var a: Foo init() { self.a = Foo() } - pub struct Foo: Second, First { + access(all) struct Foo: Second, First { init() {} } - pub struct interface First { + access(all) struct interface First { } - pub struct interface Second { + access(all) struct interface Second { } } ` @@ -2127,10 +2127,10 @@ func TestRuntimeContractUpdateConformanceChanges(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub entitlement X - pub entitlement Y - pub attachment Foo for AnyStruct { + access(all) contract Test { + access(all) entitlement X + access(all) entitlement Y + access(all) attachment Foo for AnyStruct { require entitlement X require entitlement Y } @@ -2138,10 +2138,10 @@ func TestRuntimeContractUpdateConformanceChanges(t *testing.T) { ` const newCode = ` - pub contract Test { - pub entitlement X - pub entitlement Y - pub attachment Foo for AnyStruct { + access(all) contract Test { + access(all) entitlement X + access(all) entitlement Y + access(all) attachment Foo for AnyStruct { require entitlement X } } @@ -2156,10 +2156,10 @@ func TestRuntimeContractUpdateConformanceChanges(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub entitlement X - pub entitlement Y - pub attachment Foo for AnyStruct { + access(all) contract Test { + access(all) entitlement X + access(all) entitlement Y + access(all) attachment Foo for AnyStruct { require entitlement X require entitlement Y } @@ -2167,10 +2167,10 @@ func TestRuntimeContractUpdateConformanceChanges(t *testing.T) { ` const newCode = ` - pub contract Test { - pub entitlement X - pub entitlement Y - pub attachment Foo for AnyStruct { + access(all) contract Test { + access(all) entitlement X + access(all) entitlement Y + access(all) attachment Foo for AnyStruct { require entitlement Y require entitlement X } @@ -2186,20 +2186,20 @@ func TestRuntimeContractUpdateConformanceChanges(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub entitlement X - pub entitlement Y - pub attachment Foo for AnyStruct { + access(all) contract Test { + access(all) entitlement X + access(all) entitlement Y + access(all) attachment Foo for AnyStruct { require entitlement Y } } ` const newCode = ` - pub contract Test { - pub entitlement X - pub entitlement Y - pub attachment Foo for AnyStruct { + access(all) contract Test { + access(all) entitlement X + access(all) entitlement Y + access(all) attachment Foo for AnyStruct { require entitlement X } } @@ -2218,20 +2218,20 @@ func TestRuntimeContractUpdateConformanceChanges(t *testing.T) { t.Parallel() const oldCode = ` - pub contract Test { - pub entitlement X - pub entitlement Y - pub attachment Foo for AnyStruct { + access(all) contract Test { + access(all) entitlement X + access(all) entitlement Y + access(all) attachment Foo for AnyStruct { require entitlement X } } ` const newCode = ` - pub contract Test { - pub entitlement X - pub entitlement Y - pub attachment Foo for AnyStruct { + access(all) contract Test { + access(all) entitlement X + access(all) entitlement Y + access(all) attachment Foo for AnyStruct { require entitlement X require entitlement Y } @@ -2255,14 +2255,14 @@ func TestRuntimeContractUpdateConformanceChanges(t *testing.T) { const contractName = "Test" const oldCode = ` - pub contract Test { - pub fun test(a: Int b: Int) {} + access(all) contract Test { + access(all) fun test(a: Int b: Int) {} } ` const newCode = ` - pub contract Test { - pub fun test(a: Int, b: Int) {} + access(all) contract Test { + access(all) fun test(a: Int, b: Int) {} } ` @@ -2323,10 +2323,10 @@ func TestRuntimeContractUpdateProgramCaching(t *testing.T) { const name = "Test" const oldCode = ` - pub contract Test { init() { 1 } } + access(all) contract Test { init() { 1 } } ` const newCode = ` - pub contract Test { init() { 2 } } + access(all) contract Test { init() { 2 } } ` address := common.MustBytesToAddress([]byte{0x42}) diff --git a/runtime/convertValues_test.go b/runtime/convertValues_test.go index 4d47f35250..625bc89b91 100644 --- a/runtime/convertValues_test.go +++ b/runtime/convertValues_test.go @@ -1379,7 +1379,7 @@ func TestExportIntegerValuesFromScript(t *testing.T) { script := fmt.Sprintf( ` - pub fun main(): %s { + access(all) fun main(): %s { return 42 } `, @@ -1409,7 +1409,7 @@ func TestExportFixedPointValuesFromScript(t *testing.T) { script := fmt.Sprintf( ` - pub fun main(): %s { + access(all) fun main(): %s { return %s } `, @@ -1441,7 +1441,7 @@ func TestExportAddressValue(t *testing.T) { t.Parallel() script := ` - pub fun main(): Address { + access(all) fun main(): Address { return 0x42 } ` @@ -1459,15 +1459,15 @@ func TestExportStructValue(t *testing.T) { t.Parallel() script := ` - pub struct Foo { - pub let bar: Int + access(all) struct Foo { + access(all) let bar: Int init(bar: Int) { self.bar = bar } } - pub fun main(): Foo { + access(all) fun main(): Foo { return Foo(bar: 42) } ` @@ -1490,15 +1490,15 @@ func TestExportResourceValue(t *testing.T) { t.Parallel() script := ` - pub resource Foo { - pub let bar: Int + access(all) resource Foo { + access(all) let bar: Int init(bar: Int) { self.bar = bar } } - pub fun main(): @Foo { + access(all) fun main(): @Foo { return <- create Foo(bar: 42) } ` @@ -1518,15 +1518,15 @@ func TestExportResourceArrayValue(t *testing.T) { t.Parallel() script := ` - pub resource Foo { - pub let bar: Int + access(all) resource Foo { + access(all) let bar: Int init(bar: Int) { self.bar = bar } } - pub fun main(): @[Foo] { + access(all) fun main(): @[Foo] { return <- [<- create Foo(bar: 1), <- create Foo(bar: 2)] } ` @@ -1568,15 +1568,15 @@ func TestExportResourceDictionaryValue(t *testing.T) { t.Parallel() script := ` - pub resource Foo { - pub let bar: Int + access(all) resource Foo { + access(all) let bar: Int init(bar: Int) { self.bar = bar } } - pub fun main(): @{String: Foo} { + access(all) fun main(): @{String: Foo} { return <- { "a": <- create Foo(bar: 1), "b": <- create Foo(bar: 2) @@ -1658,16 +1658,16 @@ func TestExportNestedResourceValueFromScript(t *testing.T) { } script := ` - pub resource Bar { - pub let x: Int + access(all) resource Bar { + access(all) let x: Int init(x: Int) { self.x = x } } - pub resource Foo { - pub let bar: @Bar + access(all) resource Foo { + access(all) let bar: @Bar init(bar: @Bar) { self.bar <- bar @@ -1678,7 +1678,7 @@ func TestExportNestedResourceValueFromScript(t *testing.T) { } } - pub fun main(): @Foo { + access(all) fun main(): @Foo { return <- create Foo(bar: <- create Bar(x: 42)) } ` @@ -1700,9 +1700,9 @@ func TestExportEventValue(t *testing.T) { t.Parallel() script := ` - pub event Foo(bar: Int) + access(all) event Foo(bar: Int) - pub fun main() { + access(all) fun main() { emit Foo(bar: 42) } ` @@ -1777,7 +1777,7 @@ func TestExportReferenceValue(t *testing.T) { t.Parallel() script := ` - pub fun main(): &Int { + access(all) fun main(): &Int { return &1 as &Int } ` @@ -1793,7 +1793,7 @@ func TestExportReferenceValue(t *testing.T) { t.Parallel() script := ` - pub fun main(): [&AnyStruct] { + access(all) fun main(): [&AnyStruct] { let refs: [&AnyStruct] = [] refs.append(&refs as &AnyStruct) return refs @@ -1866,7 +1866,7 @@ func TestExportReferenceValue(t *testing.T) { require.NoError(t, err) script := ` - pub fun main(): &AnyStruct { + access(all) fun main(): &AnyStruct { return getAccount(0x1).getCapability(/public/test).borrow<&AnyStruct>()! } ` @@ -1892,7 +1892,7 @@ func TestExportReferenceValue(t *testing.T) { t.Parallel() script := ` - pub fun main(): &AnyStruct { + access(all) fun main(): &AnyStruct { var acct = getAuthAccount(0x01) var v:[AnyStruct] = [] acct.save(v, to: /storage/x) @@ -1927,7 +1927,7 @@ func TestExportReferenceValue(t *testing.T) { t.Parallel() script := ` - pub fun main(): &AnyStruct { + access(all) fun main(): &AnyStruct { var acct = getAuthAccount(0x01) var v:[AnyStruct] = [] acct.save(v, to: /storage/x) @@ -1969,7 +1969,7 @@ func TestExportTypeValue(t *testing.T) { t.Parallel() script := ` - pub fun main(): Type { + access(all) fun main(): Type { return Type() } ` @@ -1987,9 +1987,9 @@ func TestExportTypeValue(t *testing.T) { t.Parallel() script := ` - pub struct S {} + access(all) struct S {} - pub fun main(): Type { + access(all) fun main(): Type { return Type() } ` @@ -2011,7 +2011,7 @@ func TestExportTypeValue(t *testing.T) { t.Parallel() script := ` - pub fun main(): Type { + access(all) fun main(): Type { return CompositeType("PublicKey")! } ` @@ -2049,9 +2049,9 @@ func TestExportTypeValue(t *testing.T) { t.Parallel() const code = ` - pub struct interface SI {} + access(all) struct interface SI {} - pub struct S: SI {} + access(all) struct S: SI {} ` program, err := parser.ParseProgram(nil, []byte(code), parser.Config{}) @@ -2343,9 +2343,9 @@ func TestExportCompositeValueWithFunctionValueField(t *testing.T) { t.Parallel() script := ` - pub struct Foo { - pub let answer: Int - pub let f: fun(): Void + access(all) struct Foo { + access(all) let answer: Int + access(all) let f: fun(): Void init() { self.answer = 42 @@ -2353,7 +2353,7 @@ func TestExportCompositeValueWithFunctionValueField(t *testing.T) { } } - pub fun main(): Foo { + access(all) fun main(): Foo { return Foo() } ` @@ -2489,15 +2489,15 @@ func TestRuntimeEnumValue(t *testing.T) { t.Run("test export", func(t *testing.T) { script := ` - pub fun main(): Direction { + access(all) fun main(): Direction { return Direction.RIGHT } - pub enum Direction: Int { - pub case UP - pub case DOWN - pub case LEFT - pub case RIGHT + access(all) enum Direction: Int { + access(all) case UP + access(all) case DOWN + access(all) case LEFT + access(all) case RIGHT } ` @@ -2507,7 +2507,7 @@ func TestRuntimeEnumValue(t *testing.T) { t.Run("test import", func(t *testing.T) { script := ` - pub fun main(dir: Direction): Direction { + access(all) fun main(dir: Direction): Direction { if !dir.isInstance(Type()) { panic("Not a Direction value") } @@ -2515,11 +2515,11 @@ func TestRuntimeEnumValue(t *testing.T) { return dir } - pub enum Direction: Int { - pub case UP - pub case DOWN - pub case LEFT - pub case RIGHT + access(all) enum Direction: Int { + access(all) case UP + access(all) case DOWN + access(all) case LEFT + access(all) case RIGHT } ` @@ -2784,7 +2784,7 @@ func TestRuntimeArgumentPassing(t *testing.T) { } script := fmt.Sprintf( - `pub fun main(arg: %[1]s)%[2]s { + `access(all) fun main(arg: %[1]s)%[2]s { if !arg.isInstance(Type<%[1]s>()) { panic("Not a %[1]s value") @@ -2921,7 +2921,7 @@ func TestRuntimeComplexStructArgumentPassing(t *testing.T) { script := fmt.Sprintf( ` - pub fun main(arg: %[1]s): %[1]s { + access(all) fun main(arg: %[1]s): %[1]s { if !arg.isInstance(Type<%[1]s>()) { panic("Not a %[1]s value") @@ -2930,17 +2930,17 @@ func TestRuntimeComplexStructArgumentPassing(t *testing.T) { return arg } - pub struct Foo { - pub var a: String? - pub var b: {String: String} - pub var c: [String] - pub var d: [String; 2] - pub var e: Address - pub var f: Bool - pub var g: StoragePath - pub var h: PublicPath - pub var i: PrivatePath - pub var j: AnyStruct + access(all) struct Foo { + access(all) var a: String? + access(all) var b: {String: String} + access(all) var c: [String] + access(all) var d: [String; 2] + access(all) var e: Address + access(all) var f: Bool + access(all) var g: StoragePath + access(all) var h: PublicPath + access(all) var i: PrivatePath + access(all) var j: AnyStruct init() { self.a = "Hello" @@ -3043,7 +3043,7 @@ func TestRuntimeComplexStructWithAnyStructFields(t *testing.T) { script := fmt.Sprintf( ` - pub fun main(arg: %[1]s): %[1]s { + access(all) fun main(arg: %[1]s): %[1]s { if !arg.isInstance(Type<%[1]s>()) { panic("Not a %[1]s value") @@ -3052,12 +3052,12 @@ func TestRuntimeComplexStructWithAnyStructFields(t *testing.T) { return arg } - pub struct Foo { - pub var a: AnyStruct? - pub var b: {String: AnyStruct} - pub var c: [AnyStruct] - pub var d: [AnyStruct; 2] - pub var e: AnyStruct + access(all) struct Foo { + access(all) var a: AnyStruct? + access(all) var b: {String: AnyStruct} + access(all) var c: [AnyStruct] + access(all) var d: [AnyStruct; 2] + access(all) var e: AnyStruct init() { self.a = "Hello" @@ -3302,7 +3302,7 @@ func TestRuntimeMalformedArgumentPassing(t *testing.T) { t.Parallel() script := fmt.Sprintf( - `pub fun main(arg: %[1]s): %[1]s { + `access(all) fun main(arg: %[1]s): %[1]s { if !arg.isInstance(Type<%[1]s>()) { panic("Not a %[1]s value") @@ -3311,24 +3311,24 @@ func TestRuntimeMalformedArgumentPassing(t *testing.T) { return arg } - pub struct Foo { - pub var a: String + access(all) struct Foo { + access(all) var a: String init() { self.a = "Hello" } } - pub struct Bar { - pub var a: [Foo] + access(all) struct Bar { + access(all) var a: [Foo] init() { self.a = [] } } - pub struct Baz { - pub var a: {String: Foo} + access(all) struct Baz { + access(all) var a: {String: Foo} init() { self.a = {} @@ -3823,11 +3823,11 @@ func TestRuntimeImportExportDictionaryValue(t *testing.T) { t.Parallel() script := - `pub fun main(arg: Foo) { + `access(all) fun main(arg: Foo) { } - pub struct Foo { - pub var a: AnyStruct + access(all) struct Foo { + access(all) var a: AnyStruct init() { self.a = nil @@ -3874,7 +3874,7 @@ func TestRuntimeImportExportDictionaryValue(t *testing.T) { t.Parallel() script := - `pub fun main(arg: {String: {String: String}}) { + `access(all) fun main(arg: {String: {String: String}}) { } ` @@ -3918,7 +3918,7 @@ func TestRuntimeStringValueImport(t *testing.T) { stringValue := cadence.String(nonUTF8String) script := ` - pub fun main(s: String) { + access(all) fun main(s: String) { log(s) } ` @@ -3971,7 +3971,7 @@ func TestTypeValueImport(t *testing.T) { typeValue := cadence.NewTypeValue(cadence.IntType{}) script := ` - pub fun main(s: Type) { + access(all) fun main(s: Type) { log(s.identifier) } ` @@ -4023,7 +4023,7 @@ func TestTypeValueImport(t *testing.T) { }) script := ` - pub fun main(s: Type) { + access(all) fun main(s: Type) { } ` @@ -4076,7 +4076,7 @@ func TestStorageCapabilityValueImport(t *testing.T) { } script := ` - pub fun main(s: Capability<&Int>) { + access(all) fun main(s: Capability<&Int>) { log(s) } ` @@ -4130,7 +4130,7 @@ func TestStorageCapabilityValueImport(t *testing.T) { } script := ` - pub fun main(s: Capability) { + access(all) fun main(s: Capability) { } ` @@ -4177,7 +4177,7 @@ func TestStorageCapabilityValueImport(t *testing.T) { } script := ` - pub fun main(s: Capability<&Int>) { + access(all) fun main(s: Capability<&Int>) { } ` @@ -4224,7 +4224,7 @@ func TestStorageCapabilityValueImport(t *testing.T) { } script := ` - pub fun main(s: Capability<&Int>) { + access(all) fun main(s: Capability<&Int>) { } ` @@ -4280,7 +4280,7 @@ func TestStorageCapabilityValueImport(t *testing.T) { } script := ` - pub fun main(s: Capability) { + access(all) fun main(s: Capability) { } ` @@ -4360,7 +4360,7 @@ func TestRuntimePublicKeyImport(t *testing.T) { t.Parallel() script := ` - pub fun main(key: PublicKey) { + access(all) fun main(key: PublicKey) { } ` @@ -4425,7 +4425,7 @@ func TestRuntimePublicKeyImport(t *testing.T) { t.Parallel() script := ` - pub fun main(key: PublicKey): Bool { + access(all) fun main(key: PublicKey): Bool { return key.verify( signature: [], signedData: [], @@ -4484,7 +4484,7 @@ func TestRuntimePublicKeyImport(t *testing.T) { t.Run("Invalid raw public key", func(t *testing.T) { script := ` - pub fun main(key: PublicKey) { + access(all) fun main(key: PublicKey) { } ` @@ -4523,7 +4523,7 @@ func TestRuntimePublicKeyImport(t *testing.T) { t.Run("Invalid content in public key", func(t *testing.T) { script := ` - pub fun main(key: PublicKey) { + access(all) fun main(key: PublicKey) { } ` @@ -4565,7 +4565,7 @@ func TestRuntimePublicKeyImport(t *testing.T) { t.Run("Invalid sign algo", func(t *testing.T) { script := ` - pub fun main(key: PublicKey) { + access(all) fun main(key: PublicKey) { } ` @@ -4600,7 +4600,7 @@ func TestRuntimePublicKeyImport(t *testing.T) { t.Run("Invalid sign algo fields", func(t *testing.T) { script := ` - pub fun main(key: PublicKey) { + access(all) fun main(key: PublicKey) { } ` @@ -4639,7 +4639,7 @@ func TestRuntimePublicKeyImport(t *testing.T) { t.Run("Extra field", func(t *testing.T) { script := ` - pub fun main(key: PublicKey) { + access(all) fun main(key: PublicKey) { } ` @@ -4730,7 +4730,7 @@ func TestRuntimePublicKeyImport(t *testing.T) { t.Run("Missing raw public key", func(t *testing.T) { script := ` - pub fun main(key: PublicKey): PublicKey { + access(all) fun main(key: PublicKey): PublicKey { return key } ` @@ -4797,7 +4797,7 @@ func TestRuntimePublicKeyImport(t *testing.T) { t.Run("Missing publicKey", func(t *testing.T) { script := ` - pub fun main(key: PublicKey): [UInt8] { + access(all) fun main(key: PublicKey): [UInt8] { return key.publicKey } ` @@ -4872,7 +4872,7 @@ func TestRuntimePublicKeyImport(t *testing.T) { t.Run("Missing signatureAlgorithm", func(t *testing.T) { script := ` - pub fun main(key: PublicKey): SignatureAlgorithm { + access(all) fun main(key: PublicKey): SignatureAlgorithm { return key.signatureAlgorithm } ` @@ -5140,11 +5140,11 @@ func TestRuntimeStaticTypeAvailability(t *testing.T) { t.Run("inner array", func(t *testing.T) { script := ` - pub fun main(arg: Foo) { + access(all) fun main(arg: Foo) { } - pub struct Foo { - pub var a: AnyStruct + access(all) struct Foo { + access(all) var a: AnyStruct init() { self.a = nil @@ -5178,11 +5178,11 @@ func TestRuntimeStaticTypeAvailability(t *testing.T) { t.Run("inner dictionary", func(t *testing.T) { script := ` - pub fun main(arg: Foo) { + access(all) fun main(arg: Foo) { } - pub struct Foo { - pub var a: AnyStruct + access(all) struct Foo { + access(all) var a: AnyStruct init() { self.a = nil @@ -5246,12 +5246,12 @@ func TestNestedStructArgPassing(t *testing.T) { t.Parallel() script := ` - pub fun main(v: AnyStruct): UInt8 { + access(all) fun main(v: AnyStruct): UInt8 { return (v as! Foo).bytes[0] } - pub struct Foo { - pub let bytes: [UInt8] + access(all) struct Foo { + access(all) let bytes: [UInt8] init(_ bytes: [UInt8]) { self.bytes = bytes @@ -5318,10 +5318,10 @@ func TestNestedStructArgPassing(t *testing.T) { t.Parallel() script := ` - pub fun main(v: AnyStruct) { + access(all) fun main(v: AnyStruct) { } - pub struct interface Foo { + access(all) struct interface Foo { } ` @@ -5388,9 +5388,9 @@ func TestDestroyedResourceReferenceExport(t *testing.T) { rt := newTestInterpreterRuntimeWithAttachments() script := []byte(` - pub resource S {} + access(all) resource S {} - pub fun main(): &S { + access(all) fun main(): &S { var s <- create S() var ref = &s as &S @@ -5402,7 +5402,7 @@ func TestDestroyedResourceReferenceExport(t *testing.T) { return ref2! } - pub fun getRef(_ ref: &S): &S { + access(all) fun getRef(_ ref: &S): &S { return ref } `) diff --git a/runtime/coverage_test.go b/runtime/coverage_test.go index 59fe97cb7b..c29c21e4e0 100644 --- a/runtime/coverage_test.go +++ b/runtime/coverage_test.go @@ -172,7 +172,7 @@ func TestCoverageReportInspectProgram(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -199,7 +199,7 @@ func TestCoverageReportInspectProgramForExcludedLocation(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -227,7 +227,7 @@ func TestCoverageReportAddLineHit(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -270,7 +270,7 @@ func TestCoverageReportWithFlowLocation(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -316,7 +316,7 @@ func TestCoverageReportWithREPLLocation(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -362,7 +362,7 @@ func TestCoverageReportWithScriptLocation(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -408,7 +408,7 @@ func TestCoverageReportWithStringLocation(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -454,7 +454,7 @@ func TestCoverageReportWithIdentifierLocation(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -500,7 +500,7 @@ func TestCoverageReportWithTransactionLocation(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -546,7 +546,7 @@ func TestCoverageReportWithAddressLocation(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -595,7 +595,7 @@ func TestCoverageReportReset(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -671,7 +671,7 @@ func TestCoverageReportPercentage(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -721,7 +721,7 @@ func TestCoverageReportString(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -776,7 +776,7 @@ func TestCoverageReportDiff(t *testing.T) { t.Parallel() script := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { var i = 0 while i < 42 { i = i + 1 @@ -841,17 +841,17 @@ func TestCoverageReportMerge(t *testing.T) { t.Parallel() integerTraitsScript := []byte(` - pub let specialNumbers: {Int: String} = { + access(all) let specialNumbers: {Int: String} = { 1729: "Harshad", 8128: "Harmonic", 41041: "Carmichael" } - pub fun addSpecialNumber(_ n: Int, _ trait: String) { + access(all) fun addSpecialNumber(_ n: Int, _ trait: String) { specialNumbers[n] = trait } - pub fun getIntegerTrait(_ n: Int): String { + access(all) fun getIntegerTrait(_ n: Int): String { if n < 0 { return "Negative" } else if n == 0 { @@ -881,7 +881,7 @@ func TestCoverageReportMerge(t *testing.T) { coverageReport.InspectProgram(location, program) factorialScript := []byte(` - pub fun factorial(_ n: Int): Int { + access(all) fun factorial(_ n: Int): Int { pre { n >= 0: "factorial is only defined for integers greater than or equal to zero" @@ -1151,17 +1151,17 @@ func TestRuntimeCoverage(t *testing.T) { t.Parallel() importedScript := []byte(` - pub let specialNumbers: {Int: String} = { + access(all) let specialNumbers: {Int: String} = { 1729: "Harshad", 8128: "Harmonic", 41041: "Carmichael" } - pub fun addSpecialNumber(_ n: Int, _ trait: String) { + access(all) fun addSpecialNumber(_ n: Int, _ trait: String) { specialNumbers[n] = trait } - pub fun getIntegerTrait(_ n: Int): String { + access(all) fun getIntegerTrait(_ n: Int): String { if n < 0 { return "Negative" } else if n == 0 { @@ -1181,7 +1181,7 @@ func TestRuntimeCoverage(t *testing.T) { return "Enormous" } - pub fun factorial(_ n: Int): Int { + access(all) fun factorial(_ n: Int): Int { pre { n >= 0: "factorial is only defined for integers greater than or equal to zero" @@ -1202,7 +1202,7 @@ func TestRuntimeCoverage(t *testing.T) { script := []byte(` import "imported" - pub fun main(): Int { + access(all) fun main(): Int { let testInputs: {Int: String} = { -1: "Negative", 0: "Zero", @@ -1325,17 +1325,17 @@ func TestRuntimeCoverageWithExcludedLocation(t *testing.T) { t.Parallel() importedScript := []byte(` - pub let specialNumbers: {Int: String} = { + access(all) let specialNumbers: {Int: String} = { 1729: "Harshad", 8128: "Harmonic", 41041: "Carmichael" } - pub fun addSpecialNumber(_ n: Int, _ trait: String) { + access(all) fun addSpecialNumber(_ n: Int, _ trait: String) { specialNumbers[n] = trait } - pub fun getIntegerTrait(_ n: Int): String { + access(all) fun getIntegerTrait(_ n: Int): String { if n < 0 { return "Negative" } else if n == 0 { @@ -1359,7 +1359,7 @@ func TestRuntimeCoverageWithExcludedLocation(t *testing.T) { script := []byte(` import "imported" - pub fun main(): Int { + access(all) fun main(): Int { let testInputs: {Int: String} = { -1: "Negative", 0: "Zero", diff --git a/runtime/crypto_test.go b/runtime/crypto_test.go index 0076b435be..82b42ce50c 100644 --- a/runtime/crypto_test.go +++ b/runtime/crypto_test.go @@ -44,7 +44,7 @@ func TestRuntimeCrypto_verify(t *testing.T) { script := []byte(` import Crypto - pub fun main(): Bool { + access(all) fun main(): Bool { let publicKey = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.ECDSA_P256 @@ -137,7 +137,7 @@ func TestRuntimeHashAlgorithm_hash(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { log(HashAlgorithm.SHA3_256.hash("01020304".decodeHex())) } ` @@ -182,7 +182,7 @@ func TestRuntimeHashAlgorithm_hash(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { HashAlgorithm.SHA3_256.hash("01020304".decodeHex()) } ` @@ -212,7 +212,7 @@ func TestRuntimeHashAlgorithm_hash(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { HashAlgorithm.SHA3_256.hashWithTag( "01020304".decodeHex(), tag: "some-tag" @@ -252,7 +252,7 @@ func TestRuntimeHashingAlgorithmExport(t *testing.T) { testHashAlgorithm := func(algo sema.CryptoAlgorithm) { script := fmt.Sprintf(` - pub fun main(): HashAlgorithm { + access(all) fun main(): HashAlgorithm { return HashAlgorithm.%s } `, @@ -293,7 +293,7 @@ func TestRuntimeSignatureAlgorithmExport(t *testing.T) { testSignatureAlgorithm := func(algo sema.CryptoAlgorithm) { script := fmt.Sprintf(` - pub fun main(): SignatureAlgorithm { + access(all) fun main(): SignatureAlgorithm { return SignatureAlgorithm.%s } `, @@ -339,7 +339,7 @@ func TestRuntimeSignatureAlgorithmImport(t *testing.T) { } const script = ` - pub fun main(algo: SignatureAlgorithm): UInt8 { + access(all) fun main(algo: SignatureAlgorithm): UInt8 { return algo.rawValue } ` @@ -390,7 +390,7 @@ func TestRuntimeHashAlgorithmImport(t *testing.T) { t.Parallel() const script = ` - pub fun main(algo: HashAlgorithm): UInt8 { + access(all) fun main(algo: HashAlgorithm): UInt8 { let data: [UInt8] = [1, 2, 3] log(algo.hash(data)) log(algo.hashWithTag(data, tag: "some-tag")) @@ -483,7 +483,7 @@ func TestBLSVerifyPoP(t *testing.T) { script := []byte(` - pub fun main(): Bool { + access(all) fun main(): Bool { let publicKey = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.BLS_BLS12_381 @@ -542,7 +542,7 @@ func TestBLSAggregateSignatures(t *testing.T) { script := []byte(` - pub fun main(): [UInt8] { + access(all) fun main(): [UInt8] { return BLS.aggregateSignatures([ [1, 1, 1, 1, 1], [2, 2, 2, 2, 2], @@ -607,7 +607,7 @@ func TestBLSAggregatePublicKeys(t *testing.T) { script := []byte(` - pub fun main(): PublicKey? { + access(all) fun main(): PublicKey? { let k1 = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.BLS_BLS12_381 @@ -700,7 +700,7 @@ func TestTraversingMerkleProof(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main(rootHash: [UInt8], address: [UInt8], accountProof: [[UInt8]]){ + access(all) fun main(rootHash: [UInt8], address: [UInt8], accountProof: [[UInt8]]){ let path = HashAlgorithm.KECCAK_256.hash(address) diff --git a/runtime/deployedcontract_test.go b/runtime/deployedcontract_test.go index e97b07b383..49166bd53c 100644 --- a/runtime/deployedcontract_test.go +++ b/runtime/deployedcontract_test.go @@ -32,10 +32,10 @@ func TestDeployedContracts(t *testing.T) { t.Parallel() contractCode := ` - pub contract Test { - pub struct A {} - pub resource B {} - pub event C() + access(all) contract Test { + access(all) struct A {} + access(all) resource B {} + access(all) event C() init() {} } diff --git a/runtime/deployment_test.go b/runtime/deployment_test.go index 783dc04da8..68c306818e 100644 --- a/runtime/deployment_test.go +++ b/runtime/deployment_test.go @@ -193,7 +193,7 @@ func TestRuntimeTransactionWithContractDeployment(t *testing.T) { t.Run("no arguments", func(t *testing.T) { test(t, testCase{ contract: ` - pub contract Test {} + access(all) contract Test {} `, arguments: []argument{}, check: expectSuccess, @@ -203,7 +203,7 @@ func TestRuntimeTransactionWithContractDeployment(t *testing.T) { t.Run("with argument", func(t *testing.T) { test(t, testCase{ contract: ` - pub contract Test { + access(all) contract Test { init(_ x: Int) {} } `, @@ -217,7 +217,7 @@ func TestRuntimeTransactionWithContractDeployment(t *testing.T) { t.Run("with incorrect argument", func(t *testing.T) { test(t, testCase{ contract: ` - pub contract Test { + access(all) contract Test { init(_ x: Int) {} } `, @@ -229,8 +229,8 @@ func TestRuntimeTransactionWithContractDeployment(t *testing.T) { "error: invalid argument at index 0: expected type `Int`, got `Bool`\n"+ " --> 0000000000000000000000000000000000000000000000000000000000000000:5:22\n"+ " |\n"+ - "5 | signer.contracts.add(name: \"Test\", code: \"0a202020202020202020202020202070756220636f6e74726163742054657374207b0a202020202020202020202020202020202020696e6974285f20783a20496e7429207b7d0a20202020202020202020202020207d0a202020202020202020202020\".decodeHex(), true)\n"+ - " | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + "5 | signer.contracts.add(name: \"Test\", code: \"0a202020202020202020202020202061636365737328616c6c2920636f6e74726163742054657374207b0a202020202020202020202020202020202020696e6974285f20783a20496e7429207b7d0a20202020202020202020202020207d0a202020202020202020202020\".decodeHex(), true)\n"+ + " | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", 2, ), }) @@ -239,7 +239,7 @@ func TestRuntimeTransactionWithContractDeployment(t *testing.T) { t.Run("additional argument", func(t *testing.T) { test(t, testCase{ contract: ` - pub contract Test {} + access(all) contract Test {} `, arguments: []argument{ interpreter.NewUnmeteredIntValueFromInt64(1), @@ -249,8 +249,8 @@ func TestRuntimeTransactionWithContractDeployment(t *testing.T) { "error: invalid argument count, too many arguments: expected 0, got 1\n"+ " --> 0000000000000000000000000000000000000000000000000000000000000000:5:22\n"+ " |\n"+ - "5 | signer.contracts.add(name: \"Test\", code: \"0a202020202020202020202020202070756220636f6e74726163742054657374207b7d0a202020202020202020202020\".decodeHex(), 1)\n"+ - " | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + "5 | signer.contracts.add(name: \"Test\", code: \"0a202020202020202020202020202061636365737328616c6c2920636f6e74726163742054657374207b7d0a202020202020202020202020\".decodeHex(), 1)\n"+ + " | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", 2, ), }) @@ -259,7 +259,7 @@ func TestRuntimeTransactionWithContractDeployment(t *testing.T) { t.Run("additional code which is invalid at top-level", func(t *testing.T) { test(t, testCase{ contract: ` - pub contract Test {} + access(all) contract Test {} fun testCase() {} `, @@ -269,8 +269,8 @@ func TestRuntimeTransactionWithContractDeployment(t *testing.T) { "error: cannot deploy invalid contract\n"+ " --> 0000000000000000000000000000000000000000000000000000000000000000:5:22\n"+ " |\n"+ - "5 | signer.contracts.add(name: \"Test\", code: \"0a202020202020202020202020202070756220636f6e74726163742054657374207b7d0a0a202020202020202020202020202066756e2074657374436173652829207b7d0a202020202020202020202020\".decodeHex())\n"+ - " | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"+ + "5 | signer.contracts.add(name: \"Test\", code: \"0a202020202020202020202020202061636365737328616c6c2920636f6e74726163742054657374207b7d0a0a202020202020202020202020202066756e2074657374436173652829207b7d0a202020202020202020202020\".decodeHex())\n"+ + " | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"+ "\n"+ "error: function declarations are not valid at the top-level\n"+ " --> 2a00000000000000.Test:4:18\n"+ @@ -315,8 +315,8 @@ func TestRuntimeTransactionWithContractDeployment(t *testing.T) { t.Run("invalid contract, checking error", func(t *testing.T) { test(t, testCase{ contract: ` - pub contract Test { - pub fun test() { X } + access(all) contract Test { + access(all) fun test() { X } } `, arguments: []argument{}, @@ -325,14 +325,14 @@ func TestRuntimeTransactionWithContractDeployment(t *testing.T) { "error: cannot deploy invalid contract\n"+ " --> 0000000000000000000000000000000000000000000000000000000000000000:5:22\n"+ " |\n"+ - "5 | signer.contracts.add(name: \"Test\", code: \"0a202020202020202020202020202070756220636f6e74726163742054657374207b0a2020202020202020202020202020202020207075622066756e20746573742829207b2058207d0a20202020202020202020202020207d0a202020202020202020202020\".decodeHex())\n"+ - " | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"+ + "5 | signer.contracts.add(name: \"Test\", code: \"0a202020202020202020202020202061636365737328616c6c2920636f6e74726163742054657374207b0a20202020202020202020202020202020202061636365737328616c6c292066756e20746573742829207b2058207d0a20202020202020202020202020207d0a202020202020202020202020\".decodeHex())\n"+ + " | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"+ "\n"+ "error: cannot find variable in this scope: `X`\n"+ - " --> 2a00000000000000.Test:3:35\n"+ + " --> 2a00000000000000.Test:3:43\n"+ " |\n"+ - "3 | pub fun test() { X }\n"+ - " | ^ not found in this scope\n", + "3 | access(all) fun test() { X }\n"+ + " | ^ not found in this scope\n", 2, ), }) @@ -341,7 +341,7 @@ func TestRuntimeTransactionWithContractDeployment(t *testing.T) { t.Run("Path subtype", func(t *testing.T) { test(t, testCase{ contract: ` - pub contract Test { + access(all) contract Test { init(_ path: StoragePath) {} } `, diff --git a/runtime/entitlements_test.go b/runtime/entitlements_test.go index 10367f6563..861be6f150 100644 --- a/runtime/entitlements_test.go +++ b/runtime/entitlements_test.go @@ -38,9 +38,9 @@ func TestAccountEntitlementSaveAndLoadSuccess(t *testing.T) { accountCodes := map[Location][]byte{} deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub entitlement X - pub entitlement Y + access(all) contract Test { + access(all) entitlement X + access(all) entitlement Y } `)) @@ -130,9 +130,9 @@ func TestAccountEntitlementSaveAndLoadFail(t *testing.T) { accountCodes := map[Location][]byte{} deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub entitlement X - pub entitlement Y + access(all) contract Test { + access(all) entitlement X + access(all) entitlement Y } `)) @@ -222,21 +222,21 @@ func TestAccountEntitlementAttachmentMap(t *testing.T) { accountCodes := map[Location][]byte{} deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub entitlement X - pub entitlement Y + access(all) contract Test { + access(all) entitlement X + access(all) entitlement Y - pub entitlement mapping M { + access(all) entitlement mapping M { X -> Y } - pub resource R {} + access(all) resource R {} access(M) attachment A for R { access(Y) fun foo() {} } - pub fun createRWithA(): @R { + access(all) fun createRWithA(): @R { return <-attach A() to <-create R() } } @@ -329,12 +329,12 @@ func TestAccountExportEntitledRef(t *testing.T) { accountCodes := map[Location][]byte{} deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub entitlement X + access(all) contract Test { + access(all) entitlement X - pub resource R {} + access(all) resource R {} - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } } @@ -342,7 +342,7 @@ func TestAccountExportEntitledRef(t *testing.T) { script := []byte(` import Test from 0x1 - pub fun main(): &Test.R { + access(all) fun main(): &Test.R { let r <- Test.createR() let authAccount = getAuthAccount(0x1) authAccount.save(<-r, to: /storage/foo) @@ -406,22 +406,22 @@ func TestAccountEntitlementNamingConflict(t *testing.T) { accountCodes := map[Location][]byte{} deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub entitlement X + access(all) contract Test { + access(all) entitlement X - pub resource R { + access(all) resource R { access(X) fun foo() {} } - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } } `)) otherDeployTx := DeploymentTransaction("OtherTest", []byte(` - pub contract OtherTest { - pub entitlement X + access(all) contract OtherTest { + access(all) entitlement X } `)) @@ -429,7 +429,7 @@ func TestAccountEntitlementNamingConflict(t *testing.T) { import Test from 0x1 import OtherTest from 0x1 - pub fun main(){ + access(all) fun main(){ let r <- Test.createR() let ref = &r as auth(OtherTest.X) &Test.R ref.foo() diff --git a/runtime/error_test.go b/runtime/error_test.go index bc46431590..2863d90802 100644 --- a/runtime/error_test.go +++ b/runtime/error_test.go @@ -107,7 +107,7 @@ func TestRuntimeError(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main() { + access(all) fun main() { let a: UInt8 = 255 let b: UInt8 = 1 // overflow @@ -147,7 +147,7 @@ func TestRuntimeError(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main() { + access(all) fun main() { let x: AnyStruct? = nil let y = x! } @@ -272,7 +272,7 @@ func TestRuntimeError(t *testing.T) { runtime := newTestInterpreterRuntime() importedScript := []byte(` - pub fun add() { + access(all) fun add() { let a: UInt8 = 255 let b: UInt8 = 1 // overflow @@ -283,7 +283,7 @@ func TestRuntimeError(t *testing.T) { script := []byte(` import add from "imported" - pub fun main() { + access(all) fun main() { add() } `) @@ -356,7 +356,7 @@ func TestRuntimeError(t *testing.T) { // program itself has more errors: // invalid top-level declaration - pub fun foo() { + access(all) fun foo() { // invalid reference to undeclared variable Y } @@ -366,7 +366,7 @@ func TestRuntimeError(t *testing.T) { Name: "B", }: ` // invalid top-level declaration - pub fun bar() { + access(all) fun bar() { // invalid reference to undeclared variable X } @@ -407,10 +407,10 @@ func TestRuntimeError(t *testing.T) { require.EqualError(t, err, "Execution failed:\n"+ "error: function declarations are not valid at the top-level\n"+ - " --> 0000000000000002.B:3:22\n"+ + " --> 0000000000000002.B:3:30\n"+ " |\n"+ - "3 | pub fun bar() {\n"+ - " | ^^^\n"+ + "3 | access(all) fun bar() {\n"+ + " | ^^^\n"+ "\n"+ "error: cannot find variable in this scope: `X`\n"+ " --> 0000000000000002.B:5:18\n"+ @@ -419,10 +419,10 @@ func TestRuntimeError(t *testing.T) { " | ^ not found in this scope\n"+ "\n"+ "error: function declarations are not valid at the top-level\n"+ - " --> 0000000000000001.A:8:22\n"+ + " --> 0000000000000001.A:8:30\n"+ " |\n"+ - "8 | pub fun foo() {\n"+ - " | ^^^\n"+ + "8 | access(all) fun foo() {\n"+ + " | ^^^\n"+ "\n"+ "error: cannot find variable in this scope: `Y`\n"+ " --> 0000000000000001.A:10:18\n"+ diff --git a/runtime/examples/importing/import.cdc b/runtime/examples/importing/import.cdc index 59ed234828..965bd985be 100644 --- a/runtime/examples/importing/import.cdc +++ b/runtime/examples/importing/import.cdc @@ -1,5 +1,5 @@ import x, crash from "imported.bpl" -pub fun main() { +access(all) fun main() { crash() } diff --git a/runtime/examples/vault.cdc b/runtime/examples/vault.cdc index 48a3119c1e..eedef16d44 100644 --- a/runtime/examples/vault.cdc +++ b/runtime/examples/vault.cdc @@ -1,6 +1,6 @@ -pub struct interface Vault { - pub balance: Int +access(all) struct interface Vault { + access(all) balance: Int init(balance: Int) { post { @@ -9,7 +9,7 @@ pub struct interface Vault { } } - pub fun withdraw(amount: Int): Vault { + access(all) fun withdraw(amount: Int): Vault { pre { amount > 0: "withdrawal amount must be positive" @@ -23,7 +23,7 @@ pub struct interface Vault { } } - pub fun deposit(vault: Vault) { + access(all) fun deposit(vault: Vault) { post { self.balance == before(self.balance) + vault.balance: "the amount must be added to the balance" @@ -31,24 +31,24 @@ pub struct interface Vault { } } -pub struct ExampleVault: Vault { - pub var balance: Int +access(all) struct ExampleVault: Vault { + access(all) var balance: Int init(balance: Int) { self.balance = balance } - pub fun withdraw(amount: Int): Vault { + access(all) fun withdraw(amount: Int): Vault { self.balance = self.balance - amount return ExampleVault(balance: amount) } - pub fun deposit(vault: Vault) { + access(all) fun deposit(vault: Vault) { self.balance = self.balance + vault.balance } } -pub fun main() { +access(all) fun main() { let vaultA = ExampleVault(balance: 10) let vaultB = ExampleVault(balance: 0) diff --git a/runtime/ft_test.go b/runtime/ft_test.go index f1d574017c..0118029de3 100644 --- a/runtime/ft_test.go +++ b/runtime/ft_test.go @@ -37,31 +37,31 @@ const realFungibleTokenContractInterface = ` /// /// The interface that fungible token contracts implement. /// -pub contract interface FungibleToken { +access(all) contract interface FungibleToken { /// The total number of tokens in existence. /// It is up to the implementer to ensure that the total supply /// stays accurate and up to date /// - pub var totalSupply: UFix64 + access(all) var totalSupply: UFix64 /// TokensInitialized /// /// The event that is emitted when the contract is created /// - pub event TokensInitialized(initialSupply: UFix64) + access(all) event TokensInitialized(initialSupply: UFix64) /// TokensWithdrawn /// /// The event that is emitted when tokens are withdrawn from a Vault /// - pub event TokensWithdrawn(amount: UFix64, from: Address?) + access(all) event TokensWithdrawn(amount: UFix64, from: Address?) /// TokensDeposited /// /// The event that is emitted when tokens are deposited into a Vault /// - pub event TokensDeposited(amount: UFix64, to: Address?) + access(all) event TokensDeposited(amount: UFix64, to: Address?) /// Provider /// @@ -72,7 +72,7 @@ pub contract interface FungibleToken { /// because it leaves open the possibility of creating custom providers /// that do not necessarily need their own balance. /// - pub resource interface Provider { + access(all) resource interface Provider { /// withdraw subtracts tokens from the owner's Vault /// and returns a Vault with the removed tokens. @@ -89,7 +89,7 @@ pub contract interface FungibleToken { /// capability that allows all users to access the provider /// resource through a reference. /// - pub fun withdraw(amount: UFix64): @Vault { + access(all) fun withdraw(amount: UFix64): @Vault { post { // 'result' refers to the return value result.balance == amount: @@ -108,11 +108,11 @@ pub contract interface FungibleToken { /// can do custom things with the tokens, like split them up and /// send them to different places. /// - pub resource interface Receiver { + access(all) resource interface Receiver { /// deposit takes a Vault and deposits it into the implementing resource type /// - pub fun deposit(from: @Vault) + access(all) fun deposit(from: @Vault) } /// Balance @@ -121,11 +121,11 @@ pub contract interface FungibleToken { /// and enforces that when new Vaults are created, the balance /// is initialized correctly. /// - pub resource interface Balance { + access(all) resource interface Balance { /// The total balance of a vault /// - pub var balance: UFix64 + access(all) var balance: UFix64 init(balance: UFix64) { post { @@ -139,7 +139,7 @@ pub contract interface FungibleToken { /// /// The resource that contains the functions to send and receive tokens. /// - pub resource Vault: Provider, Receiver, Balance { + access(all) resource Vault: Provider, Receiver, Balance { // The declaration of a concrete type in a contract interface means that // every Fungible Token contract that implements the FungibleToken interface @@ -148,7 +148,7 @@ pub contract interface FungibleToken { /// The total balance of the vault /// - pub var balance: UFix64 + access(all) var balance: UFix64 // The conforming type must declare an initializer // that allows prioviding the initial balance of the Vault @@ -158,7 +158,7 @@ pub contract interface FungibleToken { /// withdraw subtracts 'amount' from the Vault's balance /// and returns a new Vault with the subtracted balance /// - pub fun withdraw(amount: UFix64): @Vault { + access(all) fun withdraw(amount: UFix64): @Vault { pre { self.balance >= amount: "Amount withdrawn must be less than or equal than the balance of the Vault" @@ -174,7 +174,7 @@ pub contract interface FungibleToken { /// deposit takes a Vault and adds its balance to the balance of this Vault /// - pub fun deposit(from: @Vault) { + access(all) fun deposit(from: @Vault) { post { self.balance == before(self.balance) + before(from.balance): "New Vault balance must be the sum of the previous balance and the deposited Vault" @@ -184,7 +184,7 @@ pub contract interface FungibleToken { /// createEmptyVault allows any user to create a new Vault that has a zero balance /// - pub fun createEmptyVault(): @Vault { + access(all) fun createEmptyVault(): @Vault { post { result.balance == 0.0: "The newly created Vault must have zero balance" } @@ -195,31 +195,31 @@ pub contract interface FungibleToken { const realFlowContract = ` import FungibleToken from 0x1 -pub contract FlowToken: FungibleToken { +access(all) contract FlowToken: FungibleToken { // Total supply of Flow tokens in existence - pub var totalSupply: UFix64 + access(all) var totalSupply: UFix64 // Event that is emitted when the contract is created - pub event TokensInitialized(initialSupply: UFix64) + access(all) event TokensInitialized(initialSupply: UFix64) // Event that is emitted when tokens are withdrawn from a Vault - pub event TokensWithdrawn(amount: UFix64, from: Address?) + access(all) event TokensWithdrawn(amount: UFix64, from: Address?) // Event that is emitted when tokens are deposited to a Vault - pub event TokensDeposited(amount: UFix64, to: Address?) + access(all) event TokensDeposited(amount: UFix64, to: Address?) // Event that is emitted when new tokens are minted - pub event TokensMinted(amount: UFix64) + access(all) event TokensMinted(amount: UFix64) // Event that is emitted when tokens are destroyed - pub event TokensBurned(amount: UFix64) + access(all) event TokensBurned(amount: UFix64) // Event that is emitted when a new minter resource is created - pub event MinterCreated(allowedAmount: UFix64) + access(all) event MinterCreated(allowedAmount: UFix64) // Event that is emitted when a new burner resource is created - pub event BurnerCreated() + access(all) event BurnerCreated() // Vault // @@ -233,10 +233,10 @@ pub contract FlowToken: FungibleToken { // out of thin air. A special Minter resource needs to be defined to mint // new tokens. // - pub resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { + access(all) resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { // holds the balance of a users tokens - pub var balance: UFix64 + access(all) var balance: UFix64 // initialize the balance at resource creation time init(balance: UFix64) { @@ -252,7 +252,7 @@ pub contract FlowToken: FungibleToken { // created Vault to the context that called so it can be deposited // elsewhere. // - pub fun withdraw(amount: UFix64): @FungibleToken.Vault { + access(all) fun withdraw(amount: UFix64): @FungibleToken.Vault { self.balance = self.balance - amount emit TokensWithdrawn(amount: amount, from: self.owner?.address) return <-create Vault(balance: amount) @@ -265,7 +265,7 @@ pub contract FlowToken: FungibleToken { // It is allowed to destroy the sent Vault because the Vault // was a temporary holder of the tokens. The Vault's balance has // been consumed and therefore can be destroyed. - pub fun deposit(from: @FungibleToken.Vault) { + access(all) fun deposit(from: @FungibleToken.Vault) { let vault <- from as! @FlowToken.Vault self.balance = self.balance + vault.balance emit TokensDeposited(amount: vault.balance, to: self.owner?.address) @@ -285,16 +285,16 @@ pub contract FlowToken: FungibleToken { // and store the returned Vault in their storage in order to allow their // account to be able to receive deposits of this token type. // - pub fun createEmptyVault(): @FungibleToken.Vault { + access(all) fun createEmptyVault(): @FungibleToken.Vault { return <-create Vault(balance: 0.0) } - pub resource Administrator { + access(all) resource Administrator { // createNewMinter // // Function that creates and returns a new minter resource // - pub fun createNewMinter(allowedAmount: UFix64): @Minter { + access(all) fun createNewMinter(allowedAmount: UFix64): @Minter { emit MinterCreated(allowedAmount: allowedAmount) return <-create Minter(allowedAmount: allowedAmount) } @@ -303,7 +303,7 @@ pub contract FlowToken: FungibleToken { // // Function that creates and returns a new burner resource // - pub fun createNewBurner(): @Burner { + access(all) fun createNewBurner(): @Burner { emit BurnerCreated() return <-create Burner() } @@ -313,17 +313,17 @@ pub contract FlowToken: FungibleToken { // // Resource object that token admin accounts can hold to mint new tokens. // - pub resource Minter { + access(all) resource Minter { // the amount of tokens that the minter is allowed to mint - pub var allowedAmount: UFix64 + access(all) var allowedAmount: UFix64 // mintTokens // // Function that mints new tokens, adds them to the total supply, // and returns them to the calling context. // - pub fun mintTokens(amount: UFix64): @FlowToken.Vault { + access(all) fun mintTokens(amount: UFix64): @FlowToken.Vault { pre { amount > UFix64(0): "Amount minted must be greater than zero" amount <= self.allowedAmount: "Amount minted must be less than the allowed amount" @@ -343,7 +343,7 @@ pub contract FlowToken: FungibleToken { // // Resource object that token admin accounts can hold to burn tokens. // - pub resource Burner { + access(all) resource Burner { // burnTokens // @@ -352,7 +352,7 @@ pub contract FlowToken: FungibleToken { // Note: the burned tokens are automatically subtracted from the // total supply in the Vault destructor. // - pub fun burnTokens(from: @FungibleToken.Vault) { + access(all) fun burnTokens(from: @FungibleToken.Vault) { let vault <- from as! @FlowToken.Vault let amount = vault.balance destroy vault @@ -490,7 +490,7 @@ const realFlowTokenBalanceScript = ` import FungibleToken from 0x1 import FlowToken from 0x1 -pub fun main(account: Address): UFix64 { +access(all) fun main(account: Address): UFix64 { let vaultRef = getAccount(account) .getCapability(/public/flowTokenBalance) diff --git a/runtime/import_test.go b/runtime/import_test.go index 9364254cf6..a8ca56e56e 100644 --- a/runtime/import_test.go +++ b/runtime/import_test.go @@ -50,7 +50,7 @@ func TestRuntimeCyclicImport(t *testing.T) { script := []byte(` import p1 - pub fun main() {} + access(all) fun main() {} `) var checkCount int @@ -174,17 +174,17 @@ func TestCheckCyclicImports(t *testing.T) { } const fooContract = ` - pub contract Foo {} + access(all) contract Foo {} ` const barContract = ` import Foo from 0x0000000000000001 - pub contract Bar {} + access(all) contract Bar {} ` const updatedFooContract = ` import Bar from 0x0000000000000001 - pub contract Foo {} + access(all) contract Foo {} ` err := deploy("Foo", fooContract, false) diff --git a/runtime/imported_values_memory_metering_test.go b/runtime/imported_values_memory_metering_test.go index afcd05d9dd..9f5f1b7ef1 100644 --- a/runtime/imported_values_memory_metering_test.go +++ b/runtime/imported_values_memory_metering_test.go @@ -71,7 +71,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: String) {} + access(all) fun main(x: String) {} `) meter := make(map[common.MemoryKind]uint64) @@ -90,7 +90,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: String?) {} + access(all) fun main(x: String?) {} `) meter := make(map[common.MemoryKind]uint64) @@ -110,7 +110,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: UInt) {} + access(all) fun main(x: UInt) {} `) meter := make(map[common.MemoryKind]uint64) @@ -122,7 +122,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: UInt8) {} + access(all) fun main(x: UInt8) {} `) meter := make(map[common.MemoryKind]uint64) @@ -134,7 +134,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: UInt16) {} + access(all) fun main(x: UInt16) {} `) meter := make(map[common.MemoryKind]uint64) @@ -146,7 +146,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: UInt32) {} + access(all) fun main(x: UInt32) {} `) meter := make(map[common.MemoryKind]uint64) @@ -158,7 +158,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: UInt64) {} + access(all) fun main(x: UInt64) {} `) meter := make(map[common.MemoryKind]uint64) @@ -170,7 +170,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: UInt128) {} + access(all) fun main(x: UInt128) {} `) meter := make(map[common.MemoryKind]uint64) @@ -182,7 +182,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: UInt256) {} + access(all) fun main(x: UInt256) {} `) meter := make(map[common.MemoryKind]uint64) @@ -194,7 +194,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Int) {} + access(all) fun main(x: Int) {} `) meter := make(map[common.MemoryKind]uint64) @@ -206,7 +206,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Int8) {} + access(all) fun main(x: Int8) {} `) meter := make(map[common.MemoryKind]uint64) @@ -218,7 +218,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Int16) {} + access(all) fun main(x: Int16) {} `) meter := make(map[common.MemoryKind]uint64) @@ -230,7 +230,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Int32) {} + access(all) fun main(x: Int32) {} `) meter := make(map[common.MemoryKind]uint64) @@ -242,7 +242,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Int64) {} + access(all) fun main(x: Int64) {} `) meter := make(map[common.MemoryKind]uint64) @@ -254,7 +254,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Int128) {} + access(all) fun main(x: Int128) {} `) meter := make(map[common.MemoryKind]uint64) @@ -266,7 +266,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Int256) {} + access(all) fun main(x: Int256) {} `) meter := make(map[common.MemoryKind]uint64) @@ -278,7 +278,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Word8) {} + access(all) fun main(x: Word8) {} `) meter := make(map[common.MemoryKind]uint64) @@ -290,7 +290,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Word16) {} + access(all) fun main(x: Word16) {} `) meter := make(map[common.MemoryKind]uint64) @@ -302,7 +302,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Word32) {} + access(all) fun main(x: Word32) {} `) meter := make(map[common.MemoryKind]uint64) @@ -314,7 +314,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Word64) {} + access(all) fun main(x: Word64) {} `) meter := make(map[common.MemoryKind]uint64) @@ -326,7 +326,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Fix64) {} + access(all) fun main(x: Fix64) {} `) meter := make(map[common.MemoryKind]uint64) @@ -342,7 +342,7 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: UFix64) {} + access(all) fun main(x: UFix64) {} `) meter := make(map[common.MemoryKind]uint64) @@ -357,9 +357,9 @@ func TestImportedValueMemoryMetering(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: Foo) {} + access(all) fun main(x: Foo) {} - pub struct Foo {} + access(all) struct Foo {} `) meter := make(map[common.MemoryKind]uint64) @@ -528,8 +528,8 @@ func TestImportedValueMemoryMeteringForSimpleTypes(t *testing.T) { script := []byte(fmt.Sprintf( ` - pub entitlement X - pub fun main(x: %s) {} + access(all) entitlement X + access(all) fun main(x: %s) {} `, test.TypeName, )) @@ -605,8 +605,8 @@ func TestScriptDecodedLocationMetering(t *testing.T) { }) script := []byte(` - pub struct S {} - pub fun main(x: S) {} + access(all) struct S {} + access(all) fun main(x: S) {} `) _, err := runtime.ExecuteScript( diff --git a/runtime/missingmember_test.go b/runtime/missingmember_test.go index c1a41dc477..a1b0882ce9 100644 --- a/runtime/missingmember_test.go +++ b/runtime/missingmember_test.go @@ -56,31 +56,31 @@ func TestRuntimeMissingMemberFabricant(t *testing.T) { const flowTokenContract = ` import FungibleToken from 0x9a0766d93b6608b7 -pub contract FlowToken: FungibleToken { +access(all) contract FlowToken: FungibleToken { // Total supply of Flow tokens in existence - pub var totalSupply: UFix64 + access(all) var totalSupply: UFix64 // Event that is emitted when the contract is created - pub event TokensInitialized(initialSupply: UFix64) + access(all) event TokensInitialized(initialSupply: UFix64) // Event that is emitted when tokens are withdrawn from a Vault - pub event TokensWithdrawn(amount: UFix64, from: Address?) + access(all) event TokensWithdrawn(amount: UFix64, from: Address?) // Event that is emitted when tokens are deposited to a Vault - pub event TokensDeposited(amount: UFix64, to: Address?) + access(all) event TokensDeposited(amount: UFix64, to: Address?) // Event that is emitted when new tokens are minted - pub event TokensMinted(amount: UFix64) + access(all) event TokensMinted(amount: UFix64) // Event that is emitted when tokens are destroyed - pub event TokensBurned(amount: UFix64) + access(all) event TokensBurned(amount: UFix64) // Event that is emitted when a new minter resource is created - pub event MinterCreated(allowedAmount: UFix64) + access(all) event MinterCreated(allowedAmount: UFix64) // Event that is emitted when a new burner resource is created - pub event BurnerCreated() + access(all) event BurnerCreated() // Vault // @@ -94,10 +94,10 @@ pub contract FlowToken: FungibleToken { // out of thin air. A special Minter resource needs to be defined to mint // new tokens. // - pub resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { + access(all) resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { // holds the balance of a users tokens - pub var balance: UFix64 + access(all) var balance: UFix64 // initialize the balance at resource creation time init(balance: UFix64) { @@ -113,7 +113,7 @@ pub contract FlowToken: FungibleToken { // created Vault to the context that called so it can be deposited // elsewhere. // - pub fun withdraw(amount: UFix64): @FungibleToken.Vault { + access(all) fun withdraw(amount: UFix64): @FungibleToken.Vault { self.balance = self.balance - amount emit TokensWithdrawn(amount: amount, from: self.owner?.address) return <-create Vault(balance: amount) @@ -126,7 +126,7 @@ pub contract FlowToken: FungibleToken { // It is allowed to destroy the sent Vault because the Vault // was a temporary holder of the tokens. The Vault's balance has // been consumed and therefore can be destroyed. - pub fun deposit(from: @FungibleToken.Vault) { + access(all) fun deposit(from: @FungibleToken.Vault) { let vault <- from as! @FlowToken.Vault self.balance = self.balance + vault.balance emit TokensDeposited(amount: vault.balance, to: self.owner?.address) @@ -146,16 +146,16 @@ pub contract FlowToken: FungibleToken { // and store the returned Vault in their storage in order to allow their // account to be able to receive deposits of this token type. // - pub fun createEmptyVault(): @FungibleToken.Vault { + access(all) fun createEmptyVault(): @FungibleToken.Vault { return <-create Vault(balance: 0.0) } - pub resource Administrator { + access(all) resource Administrator { // createNewMinter // // Function that creates and returns a new minter resource // - pub fun createNewMinter(allowedAmount: UFix64): @Minter { + access(all) fun createNewMinter(allowedAmount: UFix64): @Minter { emit MinterCreated(allowedAmount: allowedAmount) return <-create Minter(allowedAmount: allowedAmount) } @@ -164,7 +164,7 @@ pub contract FlowToken: FungibleToken { // // Function that creates and returns a new burner resource // - pub fun createNewBurner(): @Burner { + access(all) fun createNewBurner(): @Burner { emit BurnerCreated() return <-create Burner() } @@ -174,17 +174,17 @@ pub contract FlowToken: FungibleToken { // // Resource object that token admin accounts can hold to mint new tokens. // - pub resource Minter { + access(all) resource Minter { // the amount of tokens that the minter is allowed to mint - pub var allowedAmount: UFix64 + access(all) var allowedAmount: UFix64 // mintTokens // // Function that mints new tokens, adds them to the total supply, // and returns them to the calling context. // - pub fun mintTokens(amount: UFix64): @FlowToken.Vault { + access(all) fun mintTokens(amount: UFix64): @FlowToken.Vault { pre { amount > UFix64(0): "Amount minted must be greater than zero" amount <= self.allowedAmount: "Amount minted must be less than the allowed amount" @@ -204,7 +204,7 @@ pub contract FlowToken: FungibleToken { // // Resource object that token admin accounts can hold to burn tokens. // - pub resource Burner { + access(all) resource Burner { // burnTokens // @@ -213,7 +213,7 @@ pub contract FlowToken: FungibleToken { // Note: the burned tokens are automatically subtracted from the // total supply in the Vault destructor. // - pub fun burnTokens(from: @FungibleToken.Vault) { + access(all) fun burnTokens(from: @FungibleToken.Vault) { let vault <- from as! @FlowToken.Vault let amount = vault.balance destroy vault @@ -258,40 +258,40 @@ pub contract FlowToken: FungibleToken { const fbrcContract = ` import FungibleToken from 0x9a0766d93b6608b7 -pub contract FBRC: FungibleToken { +access(all) contract FBRC: FungibleToken { // Total supply of Flow tokens in existence - pub var totalSupply: UFix64 + access(all) var totalSupply: UFix64 // Event that is emitted when the contract is created - pub event TokensInitialized(initialSupply: UFix64) + access(all) event TokensInitialized(initialSupply: UFix64) // Event that is emitted when tokens are withdrawn from a Vault - pub event TokensWithdrawn(amount: UFix64, from: Address?) + access(all) event TokensWithdrawn(amount: UFix64, from: Address?) // Event that is emitted when tokens are deposited to a Vault - pub event TokensDeposited(amount: UFix64, to: Address?) + access(all) event TokensDeposited(amount: UFix64, to: Address?) // Event that is emitted when new tokens are minted - pub event TokensMinted(amount: UFix64) + access(all) event TokensMinted(amount: UFix64) // Event that is emitted when tokens are destroyed - pub event TokensBurned(amount: UFix64) + access(all) event TokensBurned(amount: UFix64) // Event that is emitted when a new minter resource is created - pub event MinterCreated(allowedAmount: UFix64) + access(all) event MinterCreated(allowedAmount: UFix64) // Event that is emitted when a new burner resource is created - pub event BurnerCreated() + access(all) event BurnerCreated() // Contains standard storage and public paths of resources - pub let CollectionStoragePath: StoragePath + access(all) let CollectionStoragePath: StoragePath - pub let CollectionReceiverPath: PublicPath + access(all) let CollectionReceiverPath: PublicPath - pub let CollectionBalancePath: PublicPath + access(all) let CollectionBalancePath: PublicPath - pub let AdminStoragePath: StoragePath + access(all) let AdminStoragePath: StoragePath // Vault // // Each user stores an instance of only the Vault in their storage @@ -304,10 +304,10 @@ pub contract FBRC: FungibleToken { // out of thin air. A special Minter resource needs to be defined to mint // new tokens. // - pub resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { + access(all) resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { // holds the balance of a users tokens - pub var balance: UFix64 + access(all) var balance: UFix64 // initialize the balance at resource creation time init(balance: UFix64) { @@ -323,7 +323,7 @@ pub contract FBRC: FungibleToken { // created Vault to the context that called so it can be deposited // elsewhere. // - pub fun withdraw(amount: UFix64): @FungibleToken.Vault { + access(all) fun withdraw(amount: UFix64): @FungibleToken.Vault { self.balance = self.balance - amount emit TokensWithdrawn(amount: amount, from: self.owner?.address) return <-create Vault(balance: amount) @@ -336,7 +336,7 @@ pub contract FBRC: FungibleToken { // It is allowed to destroy the sent Vault because the Vault // was a temporary holder of the tokens. The Vault's balance has // been consumed and therefore can be destroyed. - pub fun deposit(from: @FungibleToken.Vault) { + access(all) fun deposit(from: @FungibleToken.Vault) { let vault <- from as! @FBRC.Vault self.balance = self.balance + vault.balance emit TokensDeposited(amount: vault.balance, to: self.owner?.address) @@ -356,16 +356,16 @@ pub contract FBRC: FungibleToken { // and store the returned Vault in their storage in order to allow their // account to be able to receive deposits of this token type. // - pub fun createEmptyVault(): @FungibleToken.Vault { + access(all) fun createEmptyVault(): @FungibleToken.Vault { return <-create Vault(balance: 0.0) } - pub resource Administrator { + access(all) resource Administrator { // createNewMinter // // Function that creates and returns a new minter resource // - pub fun createNewMinter(allowedAmount: UFix64): @Minter { + access(all) fun createNewMinter(allowedAmount: UFix64): @Minter { emit MinterCreated(allowedAmount: allowedAmount) return <-create Minter(allowedAmount: allowedAmount) } @@ -374,7 +374,7 @@ pub contract FBRC: FungibleToken { // // Function that creates and returns a new burner resource // - pub fun createNewBurner(): @Burner { + access(all) fun createNewBurner(): @Burner { emit BurnerCreated() return <-create Burner() } @@ -384,17 +384,17 @@ pub contract FBRC: FungibleToken { // // Resource object that token admin accounts can hold to mint new tokens. // - pub resource Minter { + access(all) resource Minter { // the amount of tokens that the minter is allowed to mint - pub var allowedAmount: UFix64 + access(all) var allowedAmount: UFix64 // mintTokens // // Function that mints new tokens, adds them to the total supply, // and returns them to the calling context. // - pub fun mintTokens(amount: UFix64): @FBRC.Vault { + access(all) fun mintTokens(amount: UFix64): @FBRC.Vault { pre { amount > 0.0: "Amount minted must be greater than zero" amount <= self.allowedAmount: "Amount minted must be less than the allowed amount" @@ -414,7 +414,7 @@ pub contract FBRC: FungibleToken { // // Resource object that token admin accounts can hold to burn tokens. // - pub resource Burner { + access(all) resource Burner { // burnTokens // @@ -423,7 +423,7 @@ pub contract FBRC: FungibleToken { // Note: the burned tokens are automatically subtracted from the // total supply in the Vault destructor. // - pub fun burnTokens(from: @FungibleToken.Vault) { + access(all) fun burnTokens(from: @FungibleToken.Vault) { let vault <- from as! @FBRC.Vault let amount = vault.balance destroy vault @@ -474,36 +474,36 @@ import NonFungibleToken from 0x631e88ae7f1d7c20 import FungibleToken from 0x9a0766d93b6608b7 import FBRC from 0x5a76b4858ce34b2f -pub contract GarmentNFT: NonFungibleToken { +access(all) contract GarmentNFT: NonFungibleToken { // ----------------------------------------------------------------------- // GarmentNFT contract Events // ----------------------------------------------------------------------- // Emitted when the Garment contract is created - pub event ContractInitialized() + access(all) event ContractInitialized() // Emitted when a new GarmentData struct is created - pub event GarmentDataCreated(garmentDataID: UInt32, mainImage: String, images: [String], name: String, artist: String, description: String) + access(all) event GarmentDataCreated(garmentDataID: UInt32, mainImage: String, images: [String], name: String, artist: String, description: String) // Emitted when a Garment is minted - pub event GarmentMinted(garmentID: UInt64, garmentDataID: UInt32, serialNumber: UInt32) + access(all) event GarmentMinted(garmentID: UInt64, garmentDataID: UInt32, serialNumber: UInt32) // Emitted when the contract's royalty percentage is changed - pub event RoyaltyPercentageChanged(newRoyaltyPercentage: UFix64) + access(all) event RoyaltyPercentageChanged(newRoyaltyPercentage: UFix64) - pub event GarmentDataIDRetired(garmentDataID: UInt32) + access(all) event GarmentDataIDRetired(garmentDataID: UInt32) // Events for Collection-related actions // // Emitted when a Garment is withdrawn from a Collection - pub event Withdraw(id: UInt64, from: Address?) + access(all) event Withdraw(id: UInt64, from: Address?) // Emitted when a Garment is deposited into a Collection - pub event Deposit(id: UInt64, to: Address?) + access(all) event Deposit(id: UInt64, to: Address?) // Emitted when a Garment is destroyed - pub event GarmentDestroyed(id: UInt64) + access(all) event GarmentDestroyed(id: UInt64) // ----------------------------------------------------------------------- // contract-level fields. @@ -511,11 +511,11 @@ pub contract GarmentNFT: NonFungibleToken { // ----------------------------------------------------------------------- // Contains standard storage and public paths of resources - pub let CollectionStoragePath: StoragePath + access(all) let CollectionStoragePath: StoragePath - pub let CollectionPublicPath: PublicPath + access(all) let CollectionPublicPath: PublicPath - pub let AdminStoragePath: StoragePath + access(all) let AdminStoragePath: StoragePath // Variable size dictionary of Garment structs access(self) var garmentDatas: {UInt32: GarmentData} @@ -527,25 +527,25 @@ pub contract GarmentNFT: NonFungibleToken { access(self) var isGarmentDataRetired: {UInt32: Bool} // Keeps track of how many unique GarmentData's are created - pub var nextGarmentDataID: UInt32 + access(all) var nextGarmentDataID: UInt32 - pub var royaltyPercentage: UFix64 + access(all) var royaltyPercentage: UFix64 - pub var totalSupply: UInt64 + access(all) var totalSupply: UInt64 - pub struct GarmentData { + access(all) struct GarmentData { // The unique ID for the Garment Data - pub let garmentDataID: UInt32 + access(all) let garmentDataID: UInt32 //stores link to image - pub let mainImage: String + access(all) let mainImage: String //stores link to supporting images - pub let images: [String] - pub let name: String - pub let artist: String + access(all) let images: [String] + access(all) let name: String + access(all) let artist: String //description of design - pub let description: String + access(all) let description: String init( mainImage: String, @@ -570,13 +570,13 @@ pub contract GarmentNFT: NonFungibleToken { } } - pub struct Garment { + access(all) struct Garment { // The ID of the GarmentData that the Garment references - pub let garmentDataID: UInt32 + access(all) let garmentDataID: UInt32 // The N'th NFT with 'GarmentDataID' minted - pub let serialNumber: UInt32 + access(all) let serialNumber: UInt32 init(garmentDataID: UInt32) { self.garmentDataID = garmentDataID @@ -590,16 +590,16 @@ pub contract GarmentNFT: NonFungibleToken { // The resource that represents the Garment NFTs // - pub resource NFT: NonFungibleToken.INFT { + access(all) resource NFT: NonFungibleToken.INFT { // Global unique Garment ID - pub let id: UInt64 + access(all) let id: UInt64 // struct of Garment - pub let garment: Garment + access(all) let garment: Garment // Royalty capability which NFT will use - pub let royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}> + access(all) let royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}> init(serialNumber: UInt32, garmentDataID: UInt32, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>) { GarmentNFT.totalSupply = GarmentNFT.totalSupply + 1 as UInt64 @@ -624,9 +624,9 @@ pub contract GarmentNFT: NonFungibleToken { // allows the owner to perform important functions to modify the // various aspects of the Garment and NFTs // - pub resource Admin { + access(all) resource Admin { - pub fun createGarmentData( + access(all) fun createGarmentData( mainImage: String, images: [String], name: String, @@ -654,12 +654,12 @@ pub contract GarmentNFT: NonFungibleToken { // createNewAdmin creates a new Admin resource // - pub fun createNewAdmin(): @Admin { + access(all) fun createNewAdmin(): @Admin { return <-create Admin() } // Mint the new Garment - pub fun mintNFT(garmentDataID: UInt32, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>): @NFT { + access(all) fun mintNFT(garmentDataID: UInt32, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>): @NFT { pre { royaltyVault.check(): "Royalty capability is invalid!" @@ -681,7 +681,7 @@ pub contract GarmentNFT: NonFungibleToken { return <-newGarment } - pub fun batchMintNFT(garmentDataID: UInt32, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>, quantity: UInt64): @Collection { + access(all) fun batchMintNFT(garmentDataID: UInt32, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>, quantity: UInt64): @Collection { let newCollection <- create Collection() var i: UInt64 = 0 @@ -694,14 +694,14 @@ pub contract GarmentNFT: NonFungibleToken { } // Change the royalty percentage of the contract - pub fun changeRoyaltyPercentage(newRoyaltyPercentage: UFix64) { + access(all) fun changeRoyaltyPercentage(newRoyaltyPercentage: UFix64) { GarmentNFT.royaltyPercentage = newRoyaltyPercentage emit RoyaltyPercentageChanged(newRoyaltyPercentage: newRoyaltyPercentage) } // Retire garmentData so that it cannot be used to mint anymore - pub fun retireGarmentData(garmentDataID: UInt32) { + access(all) fun retireGarmentData(garmentDataID: UInt32) { pre { GarmentNFT.isGarmentDataRetired[garmentDataID] != nil: "Cannot retire Garment: Garment doesn't exist!" } @@ -717,12 +717,12 @@ pub contract GarmentNFT: NonFungibleToken { // This is the interface users can cast their Garment Collection as // to allow others to deposit into their Collection. It also allows for reading // the IDs of Garment in the Collection. - pub resource interface GarmentCollectionPublic { - pub fun deposit(token: @NonFungibleToken.NFT) - pub fun batchDeposit(tokens: @NonFungibleToken.Collection) - pub fun getIDs(): [UInt64] - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT - pub fun borrowGarment(id: UInt64): &GarmentNFT.NFT? { + access(all) resource interface GarmentCollectionPublic { + access(all) fun deposit(token: @NonFungibleToken.NFT) + access(all) fun batchDeposit(tokens: @NonFungibleToken.Collection) + access(all) fun getIDs(): [UInt64] + access(all) fun borrowNFT(id: UInt64): &NonFungibleToken.NFT + access(all) fun borrowGarment(id: UInt64): &GarmentNFT.NFT? { // If the result isn't nil, the id of the returned reference // should be the same as the argument to the function post { @@ -735,10 +735,10 @@ pub contract GarmentNFT: NonFungibleToken { // Collection is a resource that every user who owns NFTs // will store in their account to manage their NFTS // - pub resource Collection: GarmentCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { + access(all) resource Collection: GarmentCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { // Dictionary of Garment conforming tokens // NFT is a resource type with a UInt64 ID field - pub var ownedNFTs: @{UInt64: NonFungibleToken.NFT} + access(all) var ownedNFTs: @{UInt64: NonFungibleToken.NFT} init() { self.ownedNFTs <- {} @@ -750,7 +750,7 @@ pub contract GarmentNFT: NonFungibleToken { // that is to be removed from the Collection // // returns: @NonFungibleToken.NFT the token that was withdrawn - pub fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { + access(all) fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { // Remove the nft from the Collection let token <- self.ownedNFTs.remove(key: withdrawID) ?? panic("Cannot withdraw: Garment does not exist in the collection") @@ -768,7 +768,7 @@ pub contract GarmentNFT: NonFungibleToken { // Returns: @NonFungibleToken.Collection: A collection that contains // the withdrawn Garment // - pub fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { + access(all) fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { // Create a new empty Collection var batchCollection <- create Collection() @@ -785,7 +785,7 @@ pub contract GarmentNFT: NonFungibleToken { // // Parameters: token: the NFT to be deposited in the collection // - pub fun deposit(token: @NonFungibleToken.NFT) { + access(all) fun deposit(token: @NonFungibleToken.NFT) { // Cast the deposited token as NFT to make sure // it is the correct type let token <- token as! @GarmentNFT.NFT @@ -808,7 +808,7 @@ pub contract GarmentNFT: NonFungibleToken { // batchDeposit takes a Collection object as an argument // and deposits each contained NFT into this Collection - pub fun batchDeposit(tokens: @NonFungibleToken.Collection) { + access(all) fun batchDeposit(tokens: @NonFungibleToken.Collection) { // Get an array of the IDs to be deposited let keys = tokens.getIDs() @@ -822,7 +822,7 @@ pub contract GarmentNFT: NonFungibleToken { } // getIDs returns an array of the IDs that are in the Collection - pub fun getIDs(): [UInt64] { + access(all) fun getIDs(): [UInt64] { return self.ownedNFTs.keys } @@ -837,14 +837,14 @@ pub contract GarmentNFT: NonFungibleToken { // not an specific data. Please use borrowGarment to // read Garment data. // - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { + access(all) fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { return (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! } // Parameters: id: The ID of the NFT to get the reference for // // Returns: A reference to the NFT - pub fun borrowGarment(id: UInt64): &GarmentNFT.NFT? { + access(all) fun borrowGarment(id: UInt64): &GarmentNFT.NFT? { if self.ownedNFTs[id] != nil { let ref = &self.ownedNFTs[id] as &NonFungibleToken.NFT? return ref as! &GarmentNFT.NFT? @@ -870,39 +870,39 @@ pub contract GarmentNFT: NonFungibleToken { // Once they have a Collection in their storage, they are able to receive // Garment in transactions. // - pub fun createEmptyCollection(): @NonFungibleToken.Collection { + access(all) fun createEmptyCollection(): @NonFungibleToken.Collection { return <-create GarmentNFT.Collection() } // get dictionary of numberMintedPerGarment - pub fun getNumberMintedPerGarment(): {UInt32: UInt32} { + access(all) fun getNumberMintedPerGarment(): {UInt32: UInt32} { return GarmentNFT.numberMintedPerGarment } // get how many Garments with garmentDataID are minted - pub fun getGarmentNumberMinted(id: UInt32): UInt32 { + access(all) fun getGarmentNumberMinted(id: UInt32): UInt32 { let numberMinted = GarmentNFT.numberMintedPerGarment[id]?? panic("garmentDataID not found") return numberMinted } // get the garmentData of a specific id - pub fun getGarmentData(id: UInt32): GarmentData { + access(all) fun getGarmentData(id: UInt32): GarmentData { let garmentData = GarmentNFT.garmentDatas[id]?? panic("garmentDataID not found") return garmentData } // get all garmentDatas created - pub fun getGarmentDatas(): {UInt32: GarmentData} { + access(all) fun getGarmentDatas(): {UInt32: GarmentData} { return GarmentNFT.garmentDatas } - pub fun getGarmentDatasRetired(): {UInt32: Bool} { + access(all) fun getGarmentDatasRetired(): {UInt32: Bool} { return GarmentNFT.isGarmentDataRetired } - pub fun getGarmentDataRetired(garmentDataID: UInt32): Bool { + access(all) fun getGarmentDataRetired(garmentDataID: UInt32): Bool { let isGarmentDataRetired = GarmentNFT.isGarmentDataRetired[garmentDataID]?? panic("garmentDataID not found") return isGarmentDataRetired @@ -943,36 +943,36 @@ import NonFungibleToken from 0x631e88ae7f1d7c20 import FungibleToken from 0x9a0766d93b6608b7 import FBRC from 0x5a76b4858ce34b2f -pub contract MaterialNFT: NonFungibleToken { +access(all) contract MaterialNFT: NonFungibleToken { // ----------------------------------------------------------------------- // MaterialNFT contract Events // ----------------------------------------------------------------------- // Emitted when the Material contract is created - pub event ContractInitialized() + access(all) event ContractInitialized() // Emitted when a new MaterialData struct is created - pub event MaterialDataCreated(materialDataID: UInt32, mainImage: String, secondImage: String, name: String, description: String) + access(all) event MaterialDataCreated(materialDataID: UInt32, mainImage: String, secondImage: String, name: String, description: String) // Emitted when a Material is minted - pub event MaterialMinted(materialID: UInt64, materialDataID: UInt32, serialNumber: UInt32) + access(all) event MaterialMinted(materialID: UInt64, materialDataID: UInt32, serialNumber: UInt32) // Emitted when the contract's royalty percentage is changed - pub event RoyaltyPercentageChanged(newRoyaltyPercentage: UFix64) + access(all) event RoyaltyPercentageChanged(newRoyaltyPercentage: UFix64) - pub event MaterialDataIDRetired(materialDataID: UInt32) + access(all) event MaterialDataIDRetired(materialDataID: UInt32) // Events for Collection-related actions // // Emitted when a Material is withdrawn from a Collection - pub event Withdraw(id: UInt64, from: Address?) + access(all) event Withdraw(id: UInt64, from: Address?) // Emitted when a Material is deposited into a Collection - pub event Deposit(id: UInt64, to: Address?) + access(all) event Deposit(id: UInt64, to: Address?) // Emitted when a Material is destroyed - pub event MaterialDestroyed(id: UInt64) + access(all) event MaterialDestroyed(id: UInt64) // ----------------------------------------------------------------------- // contract-level fields. @@ -980,11 +980,11 @@ pub contract MaterialNFT: NonFungibleToken { // ----------------------------------------------------------------------- // Contains standard storage and public paths of resources - pub let CollectionStoragePath: StoragePath + access(all) let CollectionStoragePath: StoragePath - pub let CollectionPublicPath: PublicPath + access(all) let CollectionPublicPath: PublicPath - pub let AdminStoragePath: StoragePath + access(all) let AdminStoragePath: StoragePath // Variable size dictionary of Material structs access(self) var materialDatas: {UInt32: MaterialData} @@ -996,22 +996,22 @@ pub contract MaterialNFT: NonFungibleToken { access(self) var isMaterialDataRetired: {UInt32: Bool} // Keeps track of how many unique MaterialData's are created - pub var nextMaterialDataID: UInt32 + access(all) var nextMaterialDataID: UInt32 - pub var royaltyPercentage: UFix64 + access(all) var royaltyPercentage: UFix64 - pub var totalSupply: UInt64 + access(all) var totalSupply: UInt64 - pub struct MaterialData { + access(all) struct MaterialData { // The unique ID for the Material Data - pub let materialDataID: UInt32 + access(all) let materialDataID: UInt32 //stores link to image - pub let mainImage: String - pub let secondImage: String - pub let name: String - pub let description: String + access(all) let mainImage: String + access(all) let secondImage: String + access(all) let name: String + access(all) let description: String init( mainImage: String, @@ -1034,13 +1034,13 @@ pub contract MaterialNFT: NonFungibleToken { } } - pub struct Material { + access(all) struct Material { // The ID of the MaterialData that the Material references - pub let materialDataID: UInt32 + access(all) let materialDataID: UInt32 // The N'th NFT with 'MaterialDataID' minted - pub let serialNumber: UInt32 + access(all) let serialNumber: UInt32 init(materialDataID: UInt32) { self.materialDataID = materialDataID @@ -1054,16 +1054,16 @@ pub contract MaterialNFT: NonFungibleToken { // The resource that represents the Material NFTs // - pub resource NFT: NonFungibleToken.INFT { + access(all) resource NFT: NonFungibleToken.INFT { // Global unique Material ID - pub let id: UInt64 + access(all) let id: UInt64 // struct of Material - pub let material: Material + access(all) let material: Material // Royalty capability which NFT will use - pub let royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}> + access(all) let royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}> init(serialNumber: UInt32, materialDataID: UInt32, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>) { MaterialNFT.totalSupply = MaterialNFT.totalSupply + 1 as UInt64 @@ -1088,9 +1088,9 @@ pub contract MaterialNFT: NonFungibleToken { // allows the owner to perform important functions to modify the // various aspects of the Material and NFTs // - pub resource Admin { + access(all) resource Admin { - pub fun createMaterialData( + access(all) fun createMaterialData( mainImage: String, secondImage: String, name: String, @@ -1116,12 +1116,12 @@ pub contract MaterialNFT: NonFungibleToken { // createNewAdmin creates a new Admin resource // - pub fun createNewAdmin(): @Admin { + access(all) fun createNewAdmin(): @Admin { return <-create Admin() } // Mint the new Material - pub fun mintNFT(materialDataID: UInt32, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>): @NFT { + access(all) fun mintNFT(materialDataID: UInt32, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>): @NFT { pre { royaltyVault.check(): "Royalty capability is invalid!" @@ -1143,7 +1143,7 @@ pub contract MaterialNFT: NonFungibleToken { return <-newMaterial } - pub fun batchMintNFT(materialDataID: UInt32, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>, quantity: UInt64): @Collection { + access(all) fun batchMintNFT(materialDataID: UInt32, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>, quantity: UInt64): @Collection { let newCollection <- create Collection() var i: UInt64 = 0 @@ -1156,14 +1156,14 @@ pub contract MaterialNFT: NonFungibleToken { } // Change the royalty percentage of the contract - pub fun changeRoyaltyPercentage(newRoyaltyPercentage: UFix64) { + access(all) fun changeRoyaltyPercentage(newRoyaltyPercentage: UFix64) { MaterialNFT.royaltyPercentage = newRoyaltyPercentage emit RoyaltyPercentageChanged(newRoyaltyPercentage: newRoyaltyPercentage) } // Retire materialData so that it cannot be used to mint anymore - pub fun retireMaterialData(materialDataID: UInt32) { + access(all) fun retireMaterialData(materialDataID: UInt32) { pre { MaterialNFT.isMaterialDataRetired[materialDataID] != nil: "Cannot retire Material: Material doesn't exist!" } @@ -1179,12 +1179,12 @@ pub contract MaterialNFT: NonFungibleToken { // This is the interface users can cast their Material Collection as // to allow others to deposit into their Collection. It also allows for reading // the IDs of Material in the Collection. - pub resource interface MaterialCollectionPublic { - pub fun deposit(token: @NonFungibleToken.NFT) - pub fun batchDeposit(tokens: @NonFungibleToken.Collection) - pub fun getIDs(): [UInt64] - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT - pub fun borrowMaterial(id: UInt64): &MaterialNFT.NFT? { + access(all) resource interface MaterialCollectionPublic { + access(all) fun deposit(token: @NonFungibleToken.NFT) + access(all) fun batchDeposit(tokens: @NonFungibleToken.Collection) + access(all) fun getIDs(): [UInt64] + access(all) fun borrowNFT(id: UInt64): &NonFungibleToken.NFT + access(all) fun borrowMaterial(id: UInt64): &MaterialNFT.NFT? { // If the result isn't nil, the id of the returned reference // should be the same as the argument to the function post { @@ -1197,10 +1197,10 @@ pub contract MaterialNFT: NonFungibleToken { // Collection is a resource that every user who owns NFTs // will store in their account to manage their NFTS // - pub resource Collection: MaterialCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { + access(all) resource Collection: MaterialCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { // Dictionary of Material conforming tokens // NFT is a resource type with a UInt64 ID field - pub var ownedNFTs: @{UInt64: NonFungibleToken.NFT} + access(all) var ownedNFTs: @{UInt64: NonFungibleToken.NFT} init() { self.ownedNFTs <- {} @@ -1212,7 +1212,7 @@ pub contract MaterialNFT: NonFungibleToken { // that is to be removed from the Collection // // returns: @NonFungibleToken.NFT the token that was withdrawn - pub fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { + access(all) fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { // Remove the nft from the Collection let token <- self.ownedNFTs.remove(key: withdrawID) ?? panic("Cannot withdraw: Material does not exist in the collection") @@ -1230,7 +1230,7 @@ pub contract MaterialNFT: NonFungibleToken { // Returns: @NonFungibleToken.Collection: A collection that contains // the withdrawn Material // - pub fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { + access(all) fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { // Create a new empty Collection var batchCollection <- create Collection() @@ -1247,7 +1247,7 @@ pub contract MaterialNFT: NonFungibleToken { // // Parameters: token: the NFT to be deposited in the collection // - pub fun deposit(token: @NonFungibleToken.NFT) { + access(all) fun deposit(token: @NonFungibleToken.NFT) { // Cast the deposited token as NFT to make sure // it is the correct type let token <- token as! @MaterialNFT.NFT @@ -1270,7 +1270,7 @@ pub contract MaterialNFT: NonFungibleToken { // batchDeposit takes a Collection object as an argument // and deposits each contained NFT into this Collection - pub fun batchDeposit(tokens: @NonFungibleToken.Collection) { + access(all) fun batchDeposit(tokens: @NonFungibleToken.Collection) { // Get an array of the IDs to be deposited let keys = tokens.getIDs() @@ -1284,7 +1284,7 @@ pub contract MaterialNFT: NonFungibleToken { } // getIDs returns an array of the IDs that are in the Collection - pub fun getIDs(): [UInt64] { + access(all) fun getIDs(): [UInt64] { return self.ownedNFTs.keys } @@ -1299,14 +1299,14 @@ pub contract MaterialNFT: NonFungibleToken { // not an specific data. Please use borrowMaterial to // read Material data. // - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { + access(all) fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { return (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! } // Parameters: id: The ID of the NFT to get the reference for // // Returns: A reference to the NFT - pub fun borrowMaterial(id: UInt64): &MaterialNFT.NFT? { + access(all) fun borrowMaterial(id: UInt64): &MaterialNFT.NFT? { if self.ownedNFTs[id] != nil { let ref = (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! return ref as! &MaterialNFT.NFT @@ -1332,39 +1332,39 @@ pub contract MaterialNFT: NonFungibleToken { // Once they have a Collection in their storage, they are able to receive // Material in transactions. // - pub fun createEmptyCollection(): @NonFungibleToken.Collection { + access(all) fun createEmptyCollection(): @NonFungibleToken.Collection { return <-create MaterialNFT.Collection() } // get dictionary of numberMintedPerMaterial - pub fun getNumberMintedPerMaterial(): {UInt32: UInt32} { + access(all) fun getNumberMintedPerMaterial(): {UInt32: UInt32} { return MaterialNFT.numberMintedPerMaterial } // get how many Materials with materialDataID are minted - pub fun getMaterialNumberMinted(id: UInt32): UInt32 { + access(all) fun getMaterialNumberMinted(id: UInt32): UInt32 { let numberMinted = MaterialNFT.numberMintedPerMaterial[id]?? panic("materialDataID not found") return numberMinted } // get the materialData of a specific id - pub fun getMaterialData(id: UInt32): MaterialData { + access(all) fun getMaterialData(id: UInt32): MaterialData { let materialData = MaterialNFT.materialDatas[id]?? panic("materialDataID not found") return materialData } // get all materialDatas created - pub fun getMaterialDatas(): {UInt32: MaterialData} { + access(all) fun getMaterialDatas(): {UInt32: MaterialData} { return MaterialNFT.materialDatas } - pub fun getMaterialDatasRetired(): {UInt32: Bool} { + access(all) fun getMaterialDatasRetired(): {UInt32: Bool} { return MaterialNFT.isMaterialDataRetired } - pub fun getMaterialDataRetired(materialDataID: UInt32): Bool { + access(all) fun getMaterialDataRetired(materialDataID: UInt32): Bool { let isMaterialDataRetired = MaterialNFT.isMaterialDataRetired[materialDataID]?? panic("materialDataID not found") return isMaterialDataRetired @@ -1407,57 +1407,57 @@ import GarmentNFT from 0x5a76b4858ce34b2f import MaterialNFT from 0x5a76b4858ce34b2f import FBRC from 0x5a76b4858ce34b2f -pub contract ItemNFT: NonFungibleToken { +access(all) contract ItemNFT: NonFungibleToken { // ----------------------------------------------------------------------- // ItemNFT contract Events // ----------------------------------------------------------------------- // Emitted when the Item contract is created - pub event ContractInitialized() + access(all) event ContractInitialized() // Emitted when a new ItemData struct is created - pub event ItemDataCreated(itemDataID: UInt32, mainImage: String, images: [String]) + access(all) event ItemDataCreated(itemDataID: UInt32, mainImage: String, images: [String]) // Emitted when a Item is mintee - pub event ItemMinted(itemID: UInt64, itemDataID: UInt32, serialNumber: UInt32) + access(all) event ItemMinted(itemID: UInt64, itemDataID: UInt32, serialNumber: UInt32) // Emitted when a Item' name is changed - pub event ItemNameChanged(id: UInt64, name: String) + access(all) event ItemNameChanged(id: UInt64, name: String) // Emitted when the contract's royalty percentage is changed - pub event RoyaltyPercentageChanged(newRoyaltyPercentage: UFix64) + access(all) event RoyaltyPercentageChanged(newRoyaltyPercentage: UFix64) - pub event ItemDataAllocated(garmentDataID: UInt32, materialDataID: UInt32, itemDataID: UInt32) + access(all) event ItemDataAllocated(garmentDataID: UInt32, materialDataID: UInt32, itemDataID: UInt32) // Emitted when the items are set to be splittable - pub event ItemNFTNowSplittable() + access(all) event ItemNFTNowSplittable() - pub event numberItemDataMintableChanged(number: UInt32) + access(all) event numberItemDataMintableChanged(number: UInt32) - pub event ItemDataIDRetired(itemDataID: UInt32) + access(all) event ItemDataIDRetired(itemDataID: UInt32) // Events for Collection-related actions // // Emitted when a Item is withdrawn from a Collection - pub event Withdraw(id: UInt64, from: Address?) + access(all) event Withdraw(id: UInt64, from: Address?) // Emitted when a Item is deposited into a Collection - pub event Deposit(id: UInt64, to: Address?) + access(all) event Deposit(id: UInt64, to: Address?) // Emitted when a Item is destroyed - pub event ItemDestroyed(id: UInt64) + access(all) event ItemDestroyed(id: UInt64) // ----------------------------------------------------------------------- // contract-level fields. // These contain actual values that are stored in the smart contract. // ----------------------------------------------------------------------- - pub let CollectionStoragePath: StoragePath + access(all) let CollectionStoragePath: StoragePath - pub let CollectionPublicPath: PublicPath + access(all) let CollectionPublicPath: PublicPath - pub let AdminStoragePath: StoragePath + access(all) let AdminStoragePath: StoragePath // Dictionary with ItemDataID as key and number of NFTs with that ItemDataID are minted access(self) var numberMintedPerItem: {UInt32: UInt32} @@ -1472,28 +1472,28 @@ pub contract ItemNFT: NonFungibleToken { access(self) var isItemDataRetired: {UInt32: Bool} // Keeps track of how many unique ItemData's are created - pub var nextItemDataID: UInt32 + access(all) var nextItemDataID: UInt32 - pub var nextItemDataAllocation: UInt32 + access(all) var nextItemDataAllocation: UInt32 // Are garment and material removable from item - pub var isSplittable: Bool + access(all) var isSplittable: Bool // The maximum number of items with itemDataID mintable - pub var numberItemDataMintable: UInt32 + access(all) var numberItemDataMintable: UInt32 - pub var royaltyPercentage: UFix64 + access(all) var royaltyPercentage: UFix64 - pub var totalSupply: UInt64 + access(all) var totalSupply: UInt64 - pub struct ItemData { + access(all) struct ItemData { // The unique ID for the Item Data - pub let itemDataID: UInt32 + access(all) let itemDataID: UInt32 //stores link to image - pub let mainImage: String + access(all) let mainImage: String //stores link to supporting images - pub let images: [String] + access(all) let images: [String] init( mainImage: String, @@ -1512,13 +1512,13 @@ pub contract ItemNFT: NonFungibleToken { } } - pub struct Item { + access(all) struct Item { // The ID of the itemData that the item references - pub let itemDataID: UInt32 + access(all) let itemDataID: UInt32 // The N'th NFT with 'ItemDataID' minted - pub let serialNumber: UInt32 + access(all) let serialNumber: UInt32 init(itemDataID: UInt32) { pre { @@ -1538,23 +1538,23 @@ pub contract ItemNFT: NonFungibleToken { // The resource that represents the Item NFTs // - pub resource NFT: NonFungibleToken.INFT { + access(all) resource NFT: NonFungibleToken.INFT { // Global unique Item ID - pub let id: UInt64 + access(all) let id: UInt64 // struct of Item - pub let item: Item + access(all) let item: Item // name of nft, can be changed - pub var name: String + access(all) var name: String // Royalty capability which NFT will use - pub let royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}> + access(all) let royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}> // after you remove the garment and material from the item, the ItemNFT will be considered "dead". // accounts will be unable to deposit, withdraw or call functions of the nft. - pub var isDead : Bool + access(all) var isDead : Bool // this is where the garment nft is stored, it cannot be moved out access(self) var garment: @GarmentNFT.NFT? @@ -1594,7 +1594,7 @@ pub contract ItemNFT: NonFungibleToken { } //Make Item considered dead. Deposit garment and material to respective vaults - pub fun split(garmentCap: Capability<&{GarmentNFT.GarmentCollectionPublic}>, materialCap: Capability<&{MaterialNFT.MaterialCollectionPublic}>) { + access(all) fun split(garmentCap: Capability<&{GarmentNFT.GarmentCollectionPublic}>, materialCap: Capability<&{MaterialNFT.MaterialCollectionPublic}>) { pre { !self.isDead: "Cannot split. Item is dead" @@ -1620,17 +1620,17 @@ pub contract ItemNFT: NonFungibleToken { } // get a reference to the garment that item stores - pub fun borrowGarment(): &GarmentNFT.NFT? { + access(all) fun borrowGarment(): &GarmentNFT.NFT? { return &self.garment as &GarmentNFT.NFT? } // get a reference to the material that item stores - pub fun borrowMaterial(): &MaterialNFT.NFT? { + access(all) fun borrowMaterial(): &MaterialNFT.NFT? { return &self.material as &MaterialNFT.NFT? } // change name of item nft - pub fun changeName(name: String) { + access(all) fun changeName(name: String) { pre { !self.isDead: "Cannot change garment name. Item is dead" @@ -1642,7 +1642,7 @@ pub contract ItemNFT: NonFungibleToken { } //destroy item if it is considered dead - pub fun cleanDeadItems(item: @ItemNFT.NFT) { + access(all) fun cleanDeadItems(item: @ItemNFT.NFT) { pre { item.isDead: "Cannot destroy, item not dead" @@ -1652,7 +1652,7 @@ pub contract ItemNFT: NonFungibleToken { // mint the NFT, combining a garment and boot. // The itemData that is used to mint the Item is based on the garment and material' garmentDataID and materialDataID - pub fun mintNFT(name: String, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>, garment: @GarmentNFT.NFT, material: @MaterialNFT.NFT): @NFT { + access(all) fun mintNFT(name: String, royaltyVault: Capability<&FBRC.Vault{FungibleToken.Receiver}>, garment: @GarmentNFT.NFT, material: @MaterialNFT.NFT): @NFT { pre { royaltyVault.check(): "Royalty capability is invalid!" @@ -1688,12 +1688,12 @@ pub contract ItemNFT: NonFungibleToken { // This is the interface that users can cast their Item Collection as // to allow others to deposit Items into their Collection. It also allows for reading // the IDs of Items in the Collection. - pub resource interface ItemCollectionPublic { - pub fun deposit(token: @NonFungibleToken.NFT) - pub fun batchDeposit(tokens: @NonFungibleToken.Collection) - pub fun getIDs(): [UInt64] - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT - pub fun borrowItem(id: UInt64): &ItemNFT.NFT? { + access(all) resource interface ItemCollectionPublic { + access(all) fun deposit(token: @NonFungibleToken.NFT) + access(all) fun batchDeposit(tokens: @NonFungibleToken.Collection) + access(all) fun getIDs(): [UInt64] + access(all) fun borrowNFT(id: UInt64): &NonFungibleToken.NFT + access(all) fun borrowItem(id: UInt64): &ItemNFT.NFT? { // If the result isn't nil, the id of the returned reference // should be the same as the argument to the function post { @@ -1706,10 +1706,10 @@ pub contract ItemNFT: NonFungibleToken { // Collection is a resource that every user who owns NFTs // will store in their account to manage their NFTS // - pub resource Collection: ItemCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { + access(all) resource Collection: ItemCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { // Dictionary of Item conforming tokens // NFT is a resource type with a UInt64 ID field - pub var ownedNFTs: @{UInt64: NonFungibleToken.NFT} + access(all) var ownedNFTs: @{UInt64: NonFungibleToken.NFT} init() { self.ownedNFTs <- {} @@ -1721,7 +1721,7 @@ pub contract ItemNFT: NonFungibleToken { // that is to be removed from the Collection // // returns: @NonFungibleToken.NFT the token that was withdrawn - pub fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { + access(all) fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { // Remove the nft from the Collection let token <- self.ownedNFTs.remove(key: withdrawID) ?? panic("Cannot withdraw: Item does not exist in the collection") @@ -1739,7 +1739,7 @@ pub contract ItemNFT: NonFungibleToken { // Returns: @NonFungibleToken.Collection: A collection that contains // the withdrawn Items // - pub fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { + access(all) fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { // Create a new empty Collection var batchCollection <- create Collection() @@ -1756,7 +1756,7 @@ pub contract ItemNFT: NonFungibleToken { // // Parameters: token: the NFT to be deposited in the collection // - pub fun deposit(token: @NonFungibleToken.NFT) { + access(all) fun deposit(token: @NonFungibleToken.NFT) { //todo: someFunction that transfers royalty // Cast the deposited token as NFT to make sure // it is the correct type @@ -1780,7 +1780,7 @@ pub contract ItemNFT: NonFungibleToken { // batchDeposit takes a Collection object as an argument // and deposits each contained NFT into this Collection - pub fun batchDeposit(tokens: @NonFungibleToken.Collection) { + access(all) fun batchDeposit(tokens: @NonFungibleToken.Collection) { // Get an array of the IDs to be deposited let keys = tokens.getIDs() @@ -1794,7 +1794,7 @@ pub contract ItemNFT: NonFungibleToken { } // getIDs returns an array of the IDs that are in the Collection - pub fun getIDs(): [UInt64] { + access(all) fun getIDs(): [UInt64] { return self.ownedNFTs.keys } @@ -1809,14 +1809,14 @@ pub contract ItemNFT: NonFungibleToken { // not an specific data. Please use borrowItem to // read Item data. // - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { + access(all) fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { return (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! } // Parameters: id: The ID of the NFT to get the reference for // // Returns: A reference to the NFT - pub fun borrowItem(id: UInt64): &ItemNFT.NFT? { + access(all) fun borrowItem(id: UInt64): &ItemNFT.NFT? { if self.ownedNFTs[id] != nil { let ref = (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! return ref as! &ItemNFT.NFT @@ -1837,10 +1837,10 @@ pub contract ItemNFT: NonFungibleToken { // allows the owner to perform important functions to modify the // various aspects of the Items and NFTs // - pub resource Admin { + access(all) resource Admin { // create itemdataid allocation from the garmentdataid and materialdataid - pub fun createItemDataAllocation(garmentDataID: UInt32, materialDataID: UInt32){ + access(all) fun createItemDataAllocation(garmentDataID: UInt32, materialDataID: UInt32){ if(ItemNFT.itemDataAllocation[garmentDataID] != nil) { if(ItemNFT.itemDataAllocation[garmentDataID]![materialDataID] != nil){ @@ -1860,7 +1860,7 @@ pub contract ItemNFT: NonFungibleToken { } - pub fun createItemData(mainImage: String, images: [String]): UInt32 { + access(all) fun createItemData(mainImage: String, images: [String]): UInt32 { // Create the new Item var newItem = ItemData(mainImage: mainImage, images: images) @@ -1875,33 +1875,33 @@ pub contract ItemNFT: NonFungibleToken { // createNewAdmin creates a new Admin resource // - pub fun createNewAdmin(): @Admin { + access(all) fun createNewAdmin(): @Admin { return <-create Admin() } // Change the royalty percentage of the contract - pub fun changeRoyaltyPercentage(newRoyaltyPercentage: UFix64) { + access(all) fun changeRoyaltyPercentage(newRoyaltyPercentage: UFix64) { ItemNFT.royaltyPercentage = newRoyaltyPercentage emit RoyaltyPercentageChanged(newRoyaltyPercentage: newRoyaltyPercentage) } // Change the royalty percentage of the contract - pub fun makeSplittable() { + access(all) fun makeSplittable() { ItemNFT.isSplittable = true emit ItemNFTNowSplittable() } // Change the royalty percentage of the contract - pub fun changeItemDataNumberMintable(number: UInt32) { + access(all) fun changeItemDataNumberMintable(number: UInt32) { ItemNFT.numberItemDataMintable = number emit numberItemDataMintableChanged(number: number) } // Retire itemData so that it cannot be used to mint anymore - pub fun retireItemData(itemDataID: UInt32) { + access(all) fun retireItemData(itemDataID: UInt32) { pre { ItemNFT.isItemDataRetired[itemDataID] != nil: "Cannot retire item: Item doesn't exist!" } @@ -1924,37 +1924,37 @@ pub contract ItemNFT: NonFungibleToken { // Once they have a Collection in their storage, they are able to receive // Items in transactions. // - pub fun createEmptyCollection(): @NonFungibleToken.Collection { + access(all) fun createEmptyCollection(): @NonFungibleToken.Collection { return <-create ItemNFT.Collection() } // get dictionary of numberMintedPerItem - pub fun getNumberMintedPerItem(): {UInt32: UInt32} { + access(all) fun getNumberMintedPerItem(): {UInt32: UInt32} { return ItemNFT.numberMintedPerItem } // get how many Items with itemDataID are minted - pub fun getItemNumberMinted(id: UInt32): UInt32 { + access(all) fun getItemNumberMinted(id: UInt32): UInt32 { let numberMinted = ItemNFT.numberMintedPerItem[id]?? panic("itemDataID not found") return numberMinted } // get the ItemData of a specific id - pub fun getItemData(id: UInt32): ItemData { + access(all) fun getItemData(id: UInt32): ItemData { let itemData = ItemNFT.itemDatas[id]?? panic("itemDataID not found") return itemData } // get the map of item data allocations - pub fun getItemDataAllocations(): {UInt32: {UInt32: UInt32}} { + access(all) fun getItemDataAllocations(): {UInt32: {UInt32: UInt32}} { let itemDataAllocation = ItemNFT.itemDataAllocation return itemDataAllocation } // get the itemData allocation from the garment and material dataID - pub fun getItemDataAllocation(garmentDataID: UInt32, materialDataID: UInt32): UInt32 { + access(all) fun getItemDataAllocation(garmentDataID: UInt32, materialDataID: UInt32): UInt32 { let isValidGarmentMaterialPair = ItemNFT.itemDataAllocation[garmentDataID]?? panic("garment and material dataID pair not allocated") @@ -1965,17 +1965,17 @@ pub contract ItemNFT: NonFungibleToken { return itemDataAllocation } // get all ItemDatas created - pub fun getItemDatas(): {UInt32: ItemData} { + access(all) fun getItemDatas(): {UInt32: ItemData} { return ItemNFT.itemDatas } // get dictionary of itemdataids and whether they are retired - pub fun getItemDatasRetired(): {UInt32: Bool} { + access(all) fun getItemDatasRetired(): {UInt32: Bool} { return ItemNFT.isItemDataRetired } // get bool of if itemdataid is retired - pub fun getItemDataRetired(itemDataID: UInt32): Bool? { + access(all) fun getItemDataRetired(itemDataID: UInt32): Bool? { return ItemNFT.isItemDataRetired[itemDataID]! } @@ -2125,7 +2125,7 @@ import FBRC from 0x5a76b4858ce34b2f import FlowToken from 0x7e60df042a9c0868 import FungibleToken from 0x9a0766d93b6608b7 -pub fun hasFBRC(_ address: Address): Bool { +access(all) fun hasFBRC(_ address: Address): Bool { let receiver = getAccount(address) .getCapability<&FBRC.Vault{FungibleToken.Receiver}>(FBRC.CollectionReceiverPath) .check() @@ -2135,7 +2135,7 @@ pub fun hasFBRC(_ address: Address): Bool { return receiver && balance } -pub fun hasFlowToken(_ address: Address): Bool { +access(all) fun hasFlowToken(_ address: Address): Bool { let receiver = getAccount(address) .getCapability<&FlowToken.Vault{FungibleToken.Receiver}>(/public/flowTokenReceiver) .check() @@ -2145,19 +2145,19 @@ pub fun hasFlowToken(_ address: Address): Bool { return receiver && balance } -pub fun hasGarmentNFT(_ address: Address): Bool { +access(all) fun hasGarmentNFT(_ address: Address): Bool { return getAccount(address) .getCapability<&{GarmentNFT.GarmentCollectionPublic}>(GarmentNFT.CollectionPublicPath) .check() } -pub fun hasMaterialNFT(_ address: Address): Bool { +access(all) fun hasMaterialNFT(_ address: Address): Bool { return getAccount(address) .getCapability<&{MaterialNFT.MaterialCollectionPublic}>(MaterialNFT.CollectionPublicPath) .check() } -pub fun hasItemNFT(_ address: Address): Bool { +access(all) fun hasItemNFT(_ address: Address): Bool { return getAccount(address) .getCapability<&{ItemNFT.ItemCollectionPublic}>(ItemNFT.CollectionPublicPath) .check() @@ -2596,15 +2596,15 @@ transaction(recipientAddr: Address, name: String, garmentWithdrawID: UInt64, mat import GarmentNFT from 0x5a76b4858ce34b2f import MaterialNFT from 0x5a76b4858ce34b2f - pub struct ItemDetails { - pub let name: String - pub let serialNumber: UInt32 - pub let numberMintedPerItemDataID: UInt32 - pub let itemDataID: UInt32 - pub let mainImage: String - pub let images: [String] - pub let garment: GarmentDetails - pub let material: MaterialDetails + access(all) struct ItemDetails { + access(all) let name: String + access(all) let serialNumber: UInt32 + access(all) let numberMintedPerItemDataID: UInt32 + access(all) let itemDataID: UInt32 + access(all) let mainImage: String + access(all) let images: [String] + access(all) let garment: GarmentDetails + access(all) let material: MaterialDetails init( name: String, @@ -2627,16 +2627,16 @@ transaction(recipientAddr: Address, name: String, garmentWithdrawID: UInt64, mat } } - pub struct GarmentDetails { - pub let id: UInt64 - pub let serialNumber: UInt32 - pub let numberMintedPerGarmentDataID: UInt32 - pub let garmentDataID: UInt32 - pub let mainImage: String - pub let images: [String] - pub let name: String - pub let artist: String - pub let description: String + access(all) struct GarmentDetails { + access(all) let id: UInt64 + access(all) let serialNumber: UInt32 + access(all) let numberMintedPerGarmentDataID: UInt32 + access(all) let garmentDataID: UInt32 + access(all) let mainImage: String + access(all) let images: [String] + access(all) let name: String + access(all) let artist: String + access(all) let description: String init( id: UInt64, @@ -2661,15 +2661,15 @@ transaction(recipientAddr: Address, name: String, garmentWithdrawID: UInt64, mat } } - pub struct MaterialDetails { - pub let id: UInt64 - pub let serialNumber: UInt32 - pub let numberMintedPerMaterialDataID: UInt32 - pub let materialDataID: UInt32 - pub let mainImage: String - pub let secondImage: String - pub let name: String - pub let description: String + access(all) struct MaterialDetails { + access(all) let id: UInt64 + access(all) let serialNumber: UInt32 + access(all) let numberMintedPerMaterialDataID: UInt32 + access(all) let materialDataID: UInt32 + access(all) let mainImage: String + access(all) let secondImage: String + access(all) let name: String + access(all) let description: String init( id: UInt64, @@ -2692,7 +2692,7 @@ transaction(recipientAddr: Address, name: String, garmentWithdrawID: UInt64, mat } } - pub fun main(account: Address, id: UInt64): ItemDetails { + access(all) fun main(account: Address, id: UInt64): ItemDetails { let acct = getAccount(account) @@ -2793,31 +2793,31 @@ func TestRuntimeMissingMemberVersus(t *testing.T) { const flowTokenContract = ` import FungibleToken from 0x9a0766d93b6608b7 -pub contract FlowToken: FungibleToken { +access(all) contract FlowToken: FungibleToken { // Total supply of Flow tokens in existence - pub var totalSupply: UFix64 + access(all) var totalSupply: UFix64 // Event that is emitted when the contract is created - pub event TokensInitialized(initialSupply: UFix64) + access(all) event TokensInitialized(initialSupply: UFix64) // Event that is emitted when tokens are withdrawn from a Vault - pub event TokensWithdrawn(amount: UFix64, from: Address?) + access(all) event TokensWithdrawn(amount: UFix64, from: Address?) // Event that is emitted when tokens are deposited to a Vault - pub event TokensDeposited(amount: UFix64, to: Address?) + access(all) event TokensDeposited(amount: UFix64, to: Address?) // Event that is emitted when new tokens are minted - pub event TokensMinted(amount: UFix64) + access(all) event TokensMinted(amount: UFix64) // Event that is emitted when tokens are destroyed - pub event TokensBurned(amount: UFix64) + access(all) event TokensBurned(amount: UFix64) // Event that is emitted when a new minter resource is created - pub event MinterCreated(allowedAmount: UFix64) + access(all) event MinterCreated(allowedAmount: UFix64) // Event that is emitted when a new burner resource is created - pub event BurnerCreated() + access(all) event BurnerCreated() // Vault // @@ -2831,10 +2831,10 @@ pub contract FlowToken: FungibleToken { // out of thin air. A special Minter resource needs to be defined to mint // new tokens. // - pub resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { + access(all) resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { // holds the balance of a users tokens - pub var balance: UFix64 + access(all) var balance: UFix64 // initialize the balance at resource creation time init(balance: UFix64) { @@ -2850,7 +2850,7 @@ pub contract FlowToken: FungibleToken { // created Vault to the context that called so it can be deposited // elsewhere. // - pub fun withdraw(amount: UFix64): @FungibleToken.Vault { + access(all) fun withdraw(amount: UFix64): @FungibleToken.Vault { self.balance = self.balance - amount emit TokensWithdrawn(amount: amount, from: self.owner?.address) return <-create Vault(balance: amount) @@ -2863,7 +2863,7 @@ pub contract FlowToken: FungibleToken { // It is allowed to destroy the sent Vault because the Vault // was a temporary holder of the tokens. The Vault's balance has // been consumed and therefore can be destroyed. - pub fun deposit(from: @FungibleToken.Vault) { + access(all) fun deposit(from: @FungibleToken.Vault) { let vault <- from as! @FlowToken.Vault self.balance = self.balance + vault.balance emit TokensDeposited(amount: vault.balance, to: self.owner?.address) @@ -2883,16 +2883,16 @@ pub contract FlowToken: FungibleToken { // and store the returned Vault in their storage in order to allow their // account to be able to receive deposits of this token type. // - pub fun createEmptyVault(): @FungibleToken.Vault { + access(all) fun createEmptyVault(): @FungibleToken.Vault { return <-create Vault(balance: 0.0) } - pub resource Administrator { + access(all) resource Administrator { // createNewMinter // // Function that creates and returns a new minter resource // - pub fun createNewMinter(allowedAmount: UFix64): @Minter { + access(all) fun createNewMinter(allowedAmount: UFix64): @Minter { emit MinterCreated(allowedAmount: allowedAmount) return <-create Minter(allowedAmount: allowedAmount) } @@ -2901,7 +2901,7 @@ pub contract FlowToken: FungibleToken { // // Function that creates and returns a new burner resource // - pub fun createNewBurner(): @Burner { + access(all) fun createNewBurner(): @Burner { emit BurnerCreated() return <-create Burner() } @@ -2911,17 +2911,17 @@ pub contract FlowToken: FungibleToken { // // Resource object that token admin accounts can hold to mint new tokens. // - pub resource Minter { + access(all) resource Minter { // the amount of tokens that the minter is allowed to mint - pub var allowedAmount: UFix64 + access(all) var allowedAmount: UFix64 // mintTokens // // Function that mints new tokens, adds them to the total supply, // and returns them to the calling context. // - pub fun mintTokens(amount: UFix64): @FlowToken.Vault { + access(all) fun mintTokens(amount: UFix64): @FlowToken.Vault { pre { amount > UFix64(0): "Amount minted must be greater than zero" amount <= self.allowedAmount: "Amount minted must be less than the allowed amount" @@ -2941,7 +2941,7 @@ pub contract FlowToken: FungibleToken { // // Resource object that token admin accounts can hold to burn tokens. // - pub resource Burner { + access(all) resource Burner { // burnTokens // @@ -2950,7 +2950,7 @@ pub contract FlowToken: FungibleToken { // Note: the burned tokens are automatically subtracted from the // total supply in the Vault destructor. // - pub fun burnTokens(from: @FungibleToken.Vault) { + access(all) fun burnTokens(from: @FungibleToken.Vault) { let vault <- from as! @FlowToken.Vault let amount = vault.balance destroy vault @@ -2999,25 +2999,25 @@ import FlowToken from 0x7e60df042a9c0868 // import Debug from 0x99ca04281098b33d // import Clock from 0x99ca04281098b33d -pub contract AuctionDutch { +access(all) contract AuctionDutch { - pub let CollectionStoragePath: StoragePath - pub let CollectionPublicPath: PublicPath + access(all) let CollectionStoragePath: StoragePath + access(all) let CollectionPublicPath: PublicPath - pub let BidCollectionStoragePath: StoragePath - pub let BidCollectionPublicPath: PublicPath + access(all) let BidCollectionStoragePath: StoragePath + access(all) let BidCollectionPublicPath: PublicPath - pub event AuctionDutchBidRejected(bidder: Address) - pub event AuctionDutchCreated(name: String, artist: String, number: Int, owner:Address, id: UInt64) + access(all) event AuctionDutchBidRejected(bidder: Address) + access(all) event AuctionDutchCreated(name: String, artist: String, number: Int, owner:Address, id: UInt64) - pub event AuctionDutchBid(amount: UFix64, bidder: Address, auction: UInt64, bid: UInt64) - pub event AuctionDutchBidIncreased(amount: UFix64, bidder: Address, auction: UInt64, bid: UInt64) - pub event AuctionDutchTick(tickPrice: UFix64, acceptedBids: Int, totalItems: Int, tickTime: UFix64, auction: UInt64) - pub event AuctionDutchSettle(price: UFix64, auction: UInt64) + access(all) event AuctionDutchBid(amount: UFix64, bidder: Address, auction: UInt64, bid: UInt64) + access(all) event AuctionDutchBidIncreased(amount: UFix64, bidder: Address, auction: UInt64, bid: UInt64) + access(all) event AuctionDutchTick(tickPrice: UFix64, acceptedBids: Int, totalItems: Int, tickTime: UFix64, auction: UInt64) + access(all) event AuctionDutchSettle(price: UFix64, auction: UInt64) - pub struct Bids { - pub let bids: [BidReport] - pub let winningPrice: UFix64? + access(all) struct Bids { + access(all) let bids: [BidReport] + access(all) let winningPrice: UFix64? init(bids: [BidReport], winningPrice: UFix64?) { self.bids =bids @@ -3025,13 +3025,13 @@ pub contract AuctionDutch { } } - pub struct BidReport { - pub let id: UInt64 - pub let time: UFix64 - pub let amount: UFix64 - pub let bidder: Address - pub let winning: Bool - pub let confirmed: Bool + access(all) struct BidReport { + access(all) let id: UInt64 + access(all) let time: UFix64 + access(all) let amount: UFix64 + access(all) let bidder: Address + access(all) let winning: Bool + access(all) let confirmed: Bool init(id: UInt64, time: UFix64, amount: UFix64, bidder: Address, winning: Bool, confirmed: Bool) { self.id=id @@ -3043,7 +3043,7 @@ pub contract AuctionDutch { } } - pub struct BidInfo { + access(all) struct BidInfo { access(contract) let id: UInt64 access(contract) let vaultCap: Capability<&{FungibleToken.Receiver}> access(contract) let nftCap: Capability<&{NonFungibleToken.Receiver}> @@ -3061,7 +3061,7 @@ pub contract AuctionDutch { self.winning=false } - pub fun increaseBid(_ amount:UFix64) { + access(all) fun increaseBid(_ amount:UFix64) { self.balance=self.balance+amount self.time = 42.0 // Clock.time() } @@ -3070,14 +3070,14 @@ pub contract AuctionDutch { self.balance=self.balance - amount } - pub fun setWinning(_ value: Bool) { + access(all) fun setWinning(_ value: Bool) { self.winning=value } } - pub struct Tick { - pub let price: UFix64 - pub let startedAt: UFix64 + access(all) struct Tick { + access(all) let price: UFix64 + access(all) let startedAt: UFix64 init(price: UFix64, startedAt: UFix64) { self.price=price @@ -3085,11 +3085,11 @@ pub contract AuctionDutch { } } - pub struct TickStatus{ - pub let price: UFix64 - pub let startedAt: UFix64 - pub let acceptedBids: Int - pub let cumulativeAcceptedBids: Int + access(all) struct TickStatus{ + access(all) let price: UFix64 + access(all) let startedAt: UFix64 + access(all) let acceptedBids: Int + access(all) let cumulativeAcceptedBids: Int init(price: UFix64, startedAt: UFix64, acceptedBids:Int, cumulativeAcceptedBids:Int) { self.price=price @@ -3099,7 +3099,7 @@ pub contract AuctionDutch { } } - pub resource Auction { + access(all) resource Auction { access(contract) let nfts: @{UInt64:NonFungibleToken.NFT} access(contract) let metadata: {String:String} @@ -3165,7 +3165,7 @@ pub contract AuctionDutch { self.royaltyPercentage=royaltyPercentage } - pub fun startAt() : UFix64 { + access(all) fun startAt() : UFix64 { return self.ticks[0].startedAt } @@ -3215,7 +3215,7 @@ pub contract AuctionDutch { emit AuctionDutchSettle(price: self.winningBid!, auction: self.uuid) } - pub fun getBids() : Bids { + access(all) fun getBids() : Bids { var bids: [BidReport] =[] var numberWinning=0 var winningBid=self.winningBid @@ -3238,7 +3238,7 @@ pub contract AuctionDutch { return Bids(bids: bids, winningPrice: winningBid) } - pub fun findWinners() : [UInt64] { + access(all) fun findWinners() : [UInt64] { var bids: [UInt64] =[] for tick in self.ticks { @@ -3259,12 +3259,12 @@ pub contract AuctionDutch { return bids } - pub fun getTick() : Tick { + access(all) fun getTick() : Tick { return self.ticks[self.currentTickIndex] } //this should be called something else - pub fun isAuctionFinished() : Bool { + access(all) fun isAuctionFinished() : Bool { if !self.isLastTick() { //if the startedAt of the next tick is larger then current time not time to tick yet @@ -3325,13 +3325,13 @@ pub contract AuctionDutch { return false } - pub fun isLastTick() : Bool { + access(all) fun isLastTick() : Bool { let tickLength = UInt64(self.ticks.length-1) return self.currentTickIndex==tickLength } // taken from bisect_right in pthon https://stackoverflow.com/questions/2945017/javas-equivalent-to-bisect-in-python - pub fun bisect(items: [UInt64], new: BidInfo) : Int { + access(all) fun bisect(items: [UInt64], new: BidInfo) : Int { var high=items.length var low=0 while low < high { @@ -3347,7 +3347,7 @@ pub contract AuctionDutch { return low } - priv fun insertBid(_ bid: BidInfo) { + access(self) fun insertBid(_ bid: BidInfo) { for tick in self.ticks { if tick.price > bid.balance { continue @@ -3369,7 +3369,7 @@ pub contract AuctionDutch { } } - pub fun findTickForBid(_ id:UInt64) : Tick { + access(all) fun findTickForBid(_ id:UInt64) : Tick { for tick in self.ticks { let bucket= self.bids[tick.startedAt]! if bucket.contains(id) { @@ -3379,7 +3379,7 @@ pub contract AuctionDutch { panic("Could not find bid") } - pub fun removeBidFromTick(_ id:UInt64, tick: UFix64) { + access(all) fun removeBidFromTick(_ id:UInt64, tick: UFix64) { var index=0 let bids= self.bids[tick]! while index < bids.length { @@ -3499,7 +3499,7 @@ pub contract AuctionDutch { //emit event } - pub fun addBid(vault: @FlowToken.Vault, nftCap: Capability<&{NonFungibleToken.Receiver}>, vaultCap: Capability<&{FungibleToken.Receiver}>, time: UFix64) : UInt64{ + access(all) fun addBid(vault: @FlowToken.Vault, nftCap: Capability<&{NonFungibleToken.Receiver}>, vaultCap: Capability<&{FungibleToken.Receiver}>, time: UFix64) : UInt64{ let bidId=self.totalBids @@ -3511,7 +3511,7 @@ pub contract AuctionDutch { return bid.id } - pub fun calculatePrice() : UFix64{ + access(all) fun calculatePrice() : UFix64{ return self.ticks[self.currentTickIndex].price } @@ -3523,27 +3523,27 @@ pub contract AuctionDutch { } } - pub resource interface Public { - pub fun getIds() : [UInt64] + access(all) resource interface Public { + access(all) fun getIds() : [UInt64] //TODO: can we just join these two? - pub fun getStatus(_ id: UInt64) : AuctionDutchStatus - pub fun getBids(_ id: UInt64) : Bids + access(all) fun getStatus(_ id: UInt64) : AuctionDutchStatus + access(all) fun getBids(_ id: UInt64) : Bids //these methods are only allowed to be called from within this contract, but we want to call them on another users resource access(contract) fun getAuction(_ id:UInt64) : &Auction - pub fun bid(id: UInt64, vault: @FungibleToken.Vault, vaultCap: Capability<&{FungibleToken.Receiver}>, nftCap: Capability<&{NonFungibleToken.Receiver}>) : @Bid + access(all) fun bid(id: UInt64, vault: @FungibleToken.Vault, vaultCap: Capability<&{FungibleToken.Receiver}>, nftCap: Capability<&{NonFungibleToken.Receiver}>) : @Bid } - pub struct AuctionDutchStatus { + access(all) struct AuctionDutchStatus { - pub let status: String - pub let startTime: UFix64 - pub let currentTime: UFix64 - pub let currentPrice: UFix64 - pub let totalItems: Int - pub let acceptedBids: Int - pub let tickStatus: {UFix64:TickStatus} - pub let metadata: {String:String} + access(all) let status: String + access(all) let startTime: UFix64 + access(all) let currentTime: UFix64 + access(all) let currentPrice: UFix64 + access(all) let totalItems: Int + access(all) let acceptedBids: Int + access(all) let tickStatus: {UFix64:TickStatus} + access(all) let metadata: {String:String} init(status:String, currentPrice: UFix64, totalItems: Int, acceptedBids:Int, startTime: UFix64, tickStatus: {UFix64:TickStatus}, metadata: {String:String}){ self.status=status @@ -3557,22 +3557,22 @@ pub contract AuctionDutch { } } - pub resource Collection: Public { + access(all) resource Collection: Public { //TODO: what to do with ended auctions? put them in another collection? //NFTS are gone but we might want to keep some information about it? - pub let auctions: @{UInt64: Auction} + access(all) let auctions: @{UInt64: Auction} init() { self.auctions <- {} } - pub fun getIds() : [UInt64] { + access(all) fun getIds() : [UInt64] { return self.auctions.keys } - pub fun getStatus(_ id: UInt64) : AuctionDutchStatus{ + access(all) fun getStatus(_ id: UInt64) : AuctionDutchStatus{ let item= self.getAuction(id) let currentTime= 42.0 // Clock.time() @@ -3595,7 +3595,7 @@ pub contract AuctionDutch { metadata:item.metadata) } - pub fun getBids(_ id:UInt64) : Bids { + access(all) fun getBids(_ id:UInt64) : Bids { pre { self.auctions[id] != nil: "auction doesn't exist" } @@ -3611,7 +3611,7 @@ pub contract AuctionDutch { return (&self.auctions[id] as &Auction?)! } - pub fun bid(id: UInt64, vault: @FungibleToken.Vault, vaultCap: Capability<&{FungibleToken.Receiver}>, nftCap: Capability<&{NonFungibleToken.Receiver}>) : @Bid{ + access(all) fun bid(id: UInt64, vault: @FungibleToken.Vault, vaultCap: Capability<&{FungibleToken.Receiver}>, nftCap: Capability<&{NonFungibleToken.Receiver}>) : @Bid{ //TODO: pre id should exist let time= 42.0 // Clock.time() @@ -3636,7 +3636,7 @@ pub contract AuctionDutch { return <- create Bid(capability: AuctionDutch.account.getCapability<&Collection{Public}>(AuctionDutch.CollectionPublicPath), auctionId: id, bidId: bidId) } - pub fun tickOrFulfill(_ id:UInt64) { + access(all) fun tickOrFulfill(_ id:UInt64) { let time= 42.0 // Clock.time() let auction=self.getAuction(id) @@ -3651,7 +3651,7 @@ pub contract AuctionDutch { } - pub fun createAuction( nfts: @{UInt64: NonFungibleToken.NFT}, metadata: {String: String}, startAt: UFix64, startPrice: UFix64, floorPrice: UFix64, decreasePriceFactor: UFix64, decreasePriceAmount: UFix64, tickDuration: UFix64, ownerVaultCap: Capability<&{FungibleToken.Receiver}>, ownerNFTCap: Capability<&{NonFungibleToken.Receiver}>, royaltyVaultCap: Capability<&{FungibleToken.Receiver}>, royaltyPercentage: UFix64) { + access(all) fun createAuction( nfts: @{UInt64: NonFungibleToken.NFT}, metadata: {String: String}, startAt: UFix64, startPrice: UFix64, floorPrice: UFix64, decreasePriceFactor: UFix64, decreasePriceAmount: UFix64, tickDuration: UFix64, ownerVaultCap: Capability<&{FungibleToken.Receiver}>, ownerNFTCap: Capability<&{NonFungibleToken.Receiver}>, royaltyVaultCap: Capability<&{FungibleToken.Receiver}>, royaltyPercentage: UFix64) { let ticks: [Tick] = [Tick(price: startPrice, startedAt: startAt)] var currentPrice=startPrice @@ -3681,7 +3681,7 @@ pub contract AuctionDutch { } - pub fun getBids(_ id: UInt64) : Bids { + access(all) fun getBids(_ id: UInt64) : Bids { let account = AuctionDutch.account let cap=account.getCapability<&Collection{Public}>(self.CollectionPublicPath) if let collection = cap.borrow() { @@ -3690,7 +3690,7 @@ pub contract AuctionDutch { panic("Could not find auction capability") } - pub fun getAuctionDutch(_ id: UInt64) : AuctionDutchStatus? { + access(all) fun getAuctionDutch(_ id: UInt64) : AuctionDutchStatus? { let account = AuctionDutch.account let cap=account.getCapability<&Collection{Public}>(self.CollectionPublicPath) if let collection = cap.borrow() { @@ -3699,11 +3699,11 @@ pub contract AuctionDutch { return nil } - pub resource Bid { + access(all) resource Bid { - pub let capability:Capability<&Collection{Public}> - pub let auctionId: UInt64 - pub let bidId: UInt64 + access(all) let capability:Capability<&Collection{Public}> + access(all) let auctionId: UInt64 + access(all) let bidId: UInt64 init(capability:Capability<&Collection{Public}>, auctionId: UInt64, bidId:UInt64) { self.capability=capability @@ -3711,31 +3711,31 @@ pub contract AuctionDutch { self.bidId=bidId } - pub fun getBidInfo() : BidInfo { + access(all) fun getBidInfo() : BidInfo { return self.capability.borrow()!.getAuction(self.auctionId).getBidInfo(id: self.bidId) } - pub fun getExcessBalance() : UFix64 { + access(all) fun getExcessBalance() : UFix64 { return self.capability.borrow()!.getAuction(self.auctionId).getExcessBalance(self.bidId) } - pub fun increaseBid(vault: @FlowToken.Vault) { + access(all) fun increaseBid(vault: @FlowToken.Vault) { self.capability.borrow()!.getAuction(self.auctionId).increaseBid(id: self.bidId, vault: <- vault) } - pub fun cancelBid() { + access(all) fun cancelBid() { self.capability.borrow()!.getAuction(self.auctionId).cancelBid(id: self.bidId) } - pub fun withdrawExcessFlow(_ cap: Capability<&{FungibleToken.Receiver}>) { + access(all) fun withdrawExcessFlow(_ cap: Capability<&{FungibleToken.Receiver}>) { self.capability.borrow()!.getAuction(self.auctionId).withdrawExcessFlow(id: self.bidId, cap:cap) } } - pub struct ExcessFlowReport { - pub let id: UInt64 - pub let winning: Bool //TODO: should this be confirmed winning? - pub let excessAmount: UFix64 + access(all) struct ExcessFlowReport { + access(all) let id: UInt64 + access(all) let winning: Bool //TODO: should this be confirmed winning? + access(all) let excessAmount: UFix64 init(id: UInt64, report: BidInfo, excessAmount: UFix64) { self.id=id @@ -3744,14 +3744,14 @@ pub contract AuctionDutch { } } - pub resource interface BidCollectionPublic { - pub fun bid(marketplace: Address, id: UInt64, vault: @FungibleToken.Vault, vaultCap: Capability<&{FungibleToken.Receiver}>, nftCap: Capability<&{NonFungibleToken.Receiver}>) - pub fun getIds() :[UInt64] - pub fun getReport(_ id: UInt64) : ExcessFlowReport + access(all) resource interface BidCollectionPublic { + access(all) fun bid(marketplace: Address, id: UInt64, vault: @FungibleToken.Vault, vaultCap: Capability<&{FungibleToken.Receiver}>, nftCap: Capability<&{NonFungibleToken.Receiver}>) + access(all) fun getIds() :[UInt64] + access(all) fun getReport(_ id: UInt64) : ExcessFlowReport } - pub resource BidCollection:BidCollectionPublic { + access(all) resource BidCollection:BidCollectionPublic { access(contract) let bids : @{UInt64: Bid} @@ -3759,34 +3759,34 @@ pub contract AuctionDutch { self.bids <- {} } - pub fun getIds() : [UInt64] { + access(all) fun getIds() : [UInt64] { return self.bids.keys } - pub fun getReport(_ id: UInt64) : ExcessFlowReport { + access(all) fun getReport(_ id: UInt64) : ExcessFlowReport { let bid=self.getBid(id) return ExcessFlowReport(id:id, report: bid.getBidInfo(), excessAmount: bid.getExcessBalance()) } - pub fun bid(marketplace: Address, id: UInt64, vault: @FungibleToken.Vault, vaultCap: Capability<&{FungibleToken.Receiver}>, nftCap: Capability<&{NonFungibleToken.Receiver}>) { + access(all) fun bid(marketplace: Address, id: UInt64, vault: @FungibleToken.Vault, vaultCap: Capability<&{FungibleToken.Receiver}>, nftCap: Capability<&{NonFungibleToken.Receiver}>) { let dutchAuctionCap=getAccount(marketplace).getCapability<&AuctionDutch.Collection{AuctionDutch.Public}>(AuctionDutch.CollectionPublicPath) let bid <- dutchAuctionCap.borrow()!.bid(id: id, vault: <- vault, vaultCap: vaultCap, nftCap: nftCap) self.bids[bid.uuid] <-! bid } - pub fun withdrawExcessFlow(id: UInt64, vaultCap: Capability<&{FungibleToken.Receiver}>) { + access(all) fun withdrawExcessFlow(id: UInt64, vaultCap: Capability<&{FungibleToken.Receiver}>) { let bid = self.getBid(id) bid.withdrawExcessFlow(vaultCap) } - pub fun cancelBid(_ id: UInt64) { + access(all) fun cancelBid(_ id: UInt64) { let bid = self.getBid(id) bid.cancelBid() destroy <- self.bids.remove(key: bid.uuid) } - pub fun increaseBid(_ id: UInt64, vault: @FungibleToken.Vault) { + access(all) fun increaseBid(_ id: UInt64, vault: @FungibleToken.Vault) { let vault <- vault as! @FlowToken.Vault let bid = self.getBid(id) bid.increaseBid(vault: <- vault) @@ -3806,7 +3806,7 @@ pub contract AuctionDutch { } - pub fun createEmptyBidCollection() : @BidCollection { + access(all) fun createEmptyBidCollection() : @BidCollection { return <- create BidCollection() } @@ -4177,10 +4177,10 @@ func TestRuntimeMissingMemberExampleMarketplace(t *testing.T) { // This is a basic implementation of a Fungible Token and is NOT meant to be used in production // See the Flow Fungible Token standard for real examples: https://github.com/onflow/flow-ft -pub contract ExampleToken { +access(all) contract ExampleToken { // Total supply of all tokens in existence. - pub var totalSupply: UFix64 + access(all) var totalSupply: UFix64 // Provider // @@ -4191,7 +4191,7 @@ pub contract ExampleToken { // it leaves open the possibility of creating custom providers // that don't necessarily need their own balance. // - pub resource interface Provider { + access(all) resource interface Provider { // withdraw // @@ -4204,7 +4204,7 @@ pub contract ExampleToken { // them access by publishing a resource that exposes the withdraw // function. // - pub fun withdraw(amount: UFix64): @Vault { + access(all) fun withdraw(amount: UFix64): @Vault { post { // result refers to the return value of the function result.balance == UFix64(amount): @@ -4223,13 +4223,13 @@ pub contract ExampleToken { // can do custom things with the tokens, like split them up and // send them to different places. // - pub resource interface Receiver { + access(all) resource interface Receiver { // deposit // // Function that can be called to deposit tokens // into the implementing resource type // - pub fun deposit(from: @Vault) { + access(all) fun deposit(from: @Vault) { pre { from.balance > 0.0: "Deposit balance must be positive" @@ -4241,8 +4241,8 @@ pub contract ExampleToken { // // Interface that specifies a public balance field for the vault // - pub resource interface Balance { - pub var balance: UFix64 + access(all) resource interface Balance { + access(all) var balance: UFix64 } // Vault @@ -4257,10 +4257,10 @@ pub contract ExampleToken { // out of thin air. A special Minter resource needs to be defined to mint // new tokens. // - pub resource Vault: Provider, Receiver, Balance { + access(all) resource Vault: Provider, Receiver, Balance { // keeps track of the total balance of the account's tokens - pub var balance: UFix64 + access(all) var balance: UFix64 // initialize the balance at resource creation time init(balance: UFix64) { @@ -4277,7 +4277,7 @@ pub contract ExampleToken { // created Vault to the context that called so it can be deposited // elsewhere. // - pub fun withdraw(amount: UFix64): @Vault { + access(all) fun withdraw(amount: UFix64): @Vault { self.balance = self.balance - amount return <-create Vault(balance: amount) } @@ -4290,7 +4290,7 @@ pub contract ExampleToken { // It is allowed to destroy the sent Vault because the Vault // was a temporary holder of the tokens. The Vault's balance has // been consumed and therefore can be destroyed. - pub fun deposit(from: @Vault) { + access(all) fun deposit(from: @Vault) { self.balance = self.balance + from.balance destroy from } @@ -4303,18 +4303,18 @@ pub contract ExampleToken { // and store the returned Vault in their storage in order to allow their // account to be able to receive deposits of this token type. // - pub fun createEmptyVault(): @Vault { + access(all) fun createEmptyVault(): @Vault { return <-create Vault(balance: 0.0) } // VaultMinter // // Resource object that an admin can control to mint new tokens - pub resource VaultMinter { + access(all) resource VaultMinter { // Function that mints new tokens and deposits into an account's vault // using their Receiver reference. - pub fun mintTokens(amount: UFix64, recipient: Capability<&AnyResource{Receiver}>) { + access(all) fun mintTokens(amount: UFix64, recipient: Capability<&AnyResource{Receiver}>) { let recipientRef = recipient.borrow() ?? panic("Could not borrow a receiver reference to the vault") @@ -4359,19 +4359,19 @@ pub contract ExampleToken { // // Learn more about non-fungible tokens in this tutorial: https://docs.onflow.org/docs/non-fungible-tokens -pub contract ExampleNFT { +access(all) contract ExampleNFT { // Declare Path constants so paths do not have to be hardcoded // in transactions and scripts - pub let CollectionStoragePath: StoragePath - pub let CollectionPublicPath: PublicPath - pub let MinterStoragePath: StoragePath + access(all) let CollectionStoragePath: StoragePath + access(all) let CollectionPublicPath: PublicPath + access(all) let MinterStoragePath: StoragePath // Declare the NFT resource type - pub resource NFT { + access(all) resource NFT { // The unique ID that differentiates each NFT - pub let id: UInt64 + access(all) let id: UInt64 // Initialize both fields in the init function init(initID: UInt64) { @@ -4383,20 +4383,20 @@ pub contract ExampleNFT { // to create public, restricted references to their NFT Collection. // They would use this to publicly expose only the deposit, getIDs, // and idExists fields in their Collection - pub resource interface NFTReceiver { + access(all) resource interface NFTReceiver { - pub fun deposit(token: @NFT) + access(all) fun deposit(token: @NFT) - pub fun getIDs(): [UInt64] + access(all) fun getIDs(): [UInt64] - pub view fun idExists(id: UInt64): Bool + access(all) view fun idExists(id: UInt64): Bool } // The definition of the Collection resource that // holds the NFTs that a user owns - pub resource Collection: NFTReceiver { + access(all) resource Collection: NFTReceiver { // dictionary of NFT conforming tokens - pub var ownedNFTs: @{UInt64: NFT} + access(all) var ownedNFTs: @{UInt64: NFT} // Initialize the NFTs field to an empty collection init () { @@ -4407,14 +4407,14 @@ pub contract ExampleNFT { // // Function that removes an NFT from the collection // and moves it to the calling context - pub fun withdraw(withdrawID: UInt64): @NFT { + access(all) fun withdraw(withdrawID: UInt64): @NFT { // If the NFT isn't found, the transaction panics and reverts let token <- self.ownedNFTs.remove(key: withdrawID)! return <-token } - pub fun getReference(id: UInt64): &NFT { + access(all) fun getReference(id: UInt64): &NFT { return (&self.ownedNFTs[id] as &NFT?)! } @@ -4422,7 +4422,7 @@ pub contract ExampleNFT { // // Function that takes a NFT as an argument and // adds it to the collections dictionary - pub fun deposit(token: @NFT) { + access(all) fun deposit(token: @NFT) { // add the new token to the dictionary with a force assignment // if there is already a value at that key, it will fail and revert self.ownedNFTs[token.id] <-! token @@ -4430,12 +4430,12 @@ pub contract ExampleNFT { // idExists checks to see if a NFT // with the given ID exists in the collection - pub view fun idExists(id: UInt64): Bool { + access(all) view fun idExists(id: UInt64): Bool { return self.ownedNFTs[id] != nil } // getIDs returns an array of the IDs that are in the collection - pub fun getIDs(): [UInt64] { + access(all) fun getIDs(): [UInt64] { return self.ownedNFTs.keys } @@ -4445,7 +4445,7 @@ pub contract ExampleNFT { } // creates a new empty Collection resource and returns it - pub fun createEmptyCollection(): @Collection { + access(all) fun createEmptyCollection(): @Collection { return <- create Collection() } @@ -4453,13 +4453,13 @@ pub contract ExampleNFT { // // Resource that would be owned by an admin or by a smart contract // that allows them to mint new NFTs when needed - pub resource NFTMinter { + access(all) resource NFTMinter { // the ID that is used to mint NFTs // it is only incremented so that NFT ids remain // unique. It also keeps track of the total number of NFTs // in existence - pub var idCount: UInt64 + access(all) var idCount: UInt64 init() { self.idCount = 1 @@ -4469,7 +4469,7 @@ pub contract ExampleNFT { // // Function that mints a new NFT with a new ID // and returns it to the caller - pub fun mintNFT(): @NFT { + access(all) fun mintNFT(): @NFT { // create a new NFT var newNFT <- create NFT(initID: self.idCount) @@ -4518,27 +4518,27 @@ import ExampleNFT from 0x02 // // https://github.com/onflow/nft-storefront -pub contract ExampleMarketplace { +access(all) contract ExampleMarketplace { // Event that is emitted when a new NFT is put up for sale - pub event ForSale(id: UInt64, price: UFix64, owner: Address?) + access(all) event ForSale(id: UInt64, price: UFix64, owner: Address?) // Event that is emitted when the price of an NFT changes - pub event PriceChanged(id: UInt64, newPrice: UFix64, owner: Address?) + access(all) event PriceChanged(id: UInt64, newPrice: UFix64, owner: Address?) // Event that is emitted when a token is purchased - pub event TokenPurchased(id: UInt64, price: UFix64, seller: Address?, buyer: Address?) + access(all) event TokenPurchased(id: UInt64, price: UFix64, seller: Address?, buyer: Address?) // Event that is emitted when a seller withdraws their NFT from the sale - pub event SaleCanceled(id: UInt64, seller: Address?) + access(all) event SaleCanceled(id: UInt64, seller: Address?) // Interface that users will publish for their Sale collection // that only exposes the methods that are supposed to be public // - pub resource interface SalePublic { - pub fun purchase(tokenID: UInt64, recipient: Capability<&AnyResource{ExampleNFT.NFTReceiver}>, buyTokens: @ExampleToken.Vault) - pub fun idPrice(tokenID: UInt64): UFix64? - pub fun getIDs(): [UInt64] + access(all) resource interface SalePublic { + access(all) fun purchase(tokenID: UInt64, recipient: Capability<&AnyResource{ExampleNFT.NFTReceiver}>, buyTokens: @ExampleToken.Vault) + access(all) fun idPrice(tokenID: UInt64): UFix64? + access(all) fun getIDs(): [UInt64] } // SaleCollection @@ -4546,7 +4546,7 @@ pub contract ExampleMarketplace { // NFT Collection object that allows a user to put their NFT up for sale // where others can send fungible tokens to purchase it // - pub resource SaleCollection: SalePublic { + access(all) resource SaleCollection: SalePublic { /// A capability for the owner's collection access(self) var ownerCollection: Capability<&ExampleNFT.Collection> @@ -4577,7 +4577,7 @@ pub contract ExampleMarketplace { } // cancelSale gives the owner the opportunity to cancel a sale in the collection - pub fun cancelSale(tokenID: UInt64) { + access(all) fun cancelSale(tokenID: UInt64) { // remove the price self.prices.remove(key: tokenID) self.prices[tokenID] = nil @@ -4586,7 +4586,7 @@ pub contract ExampleMarketplace { } // listForSale lists an NFT for sale in this collection - pub fun listForSale(tokenID: UInt64, price: UFix64) { + access(all) fun listForSale(tokenID: UInt64, price: UFix64) { pre { self.ownerCollection.borrow()!.idExists(id: tokenID): "NFT to be listed does not exist in the owner's collection" @@ -4598,14 +4598,14 @@ pub contract ExampleMarketplace { } // changePrice changes the price of a token that is currently for sale - pub fun changePrice(tokenID: UInt64, newPrice: UFix64) { + access(all) fun changePrice(tokenID: UInt64, newPrice: UFix64) { self.prices[tokenID] = newPrice emit PriceChanged(id: tokenID, newPrice: newPrice, owner: self.owner?.address) } // purchase lets a user send tokens to purchase an NFT that is for sale - pub fun purchase(tokenID: UInt64, recipient: Capability<&AnyResource{ExampleNFT.NFTReceiver}>, buyTokens: @ExampleToken.Vault) { + access(all) fun purchase(tokenID: UInt64, recipient: Capability<&AnyResource{ExampleNFT.NFTReceiver}>, buyTokens: @ExampleToken.Vault) { pre { self.prices[tokenID] != nil: "No token matching this ID for sale!" @@ -4641,18 +4641,18 @@ pub contract ExampleMarketplace { } // idPrice returns the price of a specific token in the sale - pub fun idPrice(tokenID: UInt64): UFix64? { + access(all) fun idPrice(tokenID: UInt64): UFix64? { return self.prices[tokenID] } // getIDs returns an array of token IDs that are for sale - pub fun getIDs(): [UInt64] { + access(all) fun getIDs(): [UInt64] { return self.prices.keys } } // createCollection returns a new collection resource to the caller - pub fun createSaleCollection(ownerCollection: Capability<&ExampleNFT.Collection>, + access(all) fun createSaleCollection(ownerCollection: Capability<&ExampleNFT.Collection>, ownerVault: Capability<&AnyResource{ExampleToken.Receiver}>): @SaleCollection { return <- create SaleCollection(ownerCollection: ownerCollection, ownerVault: ownerVault) } diff --git a/runtime/nft_test.go b/runtime/nft_test.go index 7895295c88..298bb33ab6 100644 --- a/runtime/nft_test.go +++ b/runtime/nft_test.go @@ -20,44 +20,44 @@ package runtime const realNonFungibleTokenInterface = ` -pub contract interface NonFungibleToken { +access(all) contract interface NonFungibleToken { // The total number of tokens of this type in existence - pub var totalSupply: UInt64 + access(all) var totalSupply: UInt64 // Event that emitted when the NFT contract is initialized // - pub event ContractInitialized() + access(all) event ContractInitialized() // Event that is emitted when a token is withdrawn, // indicating the owner of the collection that it was withdrawn from. // - pub event Withdraw(id: UInt64, from: Address?) + access(all) event Withdraw(id: UInt64, from: Address?) // Event that emitted when a token is deposited to a collection. // // It indicates the owner of the collection that it was deposited to. // - pub event Deposit(id: UInt64, to: Address?) + access(all) event Deposit(id: UInt64, to: Address?) // Interface that the NFTs have to conform to // - pub resource interface INFT { + access(all) resource interface INFT { // The unique ID that each NFT has - pub let id: UInt64 + access(all) let id: UInt64 } // Requirement that all conforming NFT smart contracts have // to define a resource called NFT that conforms to INFT - pub resource NFT: INFT { - pub let id: UInt64 + access(all) resource NFT: INFT { + access(all) let id: UInt64 } // Interface to mediate withdraws from the Collection // - pub resource interface Provider { + access(all) resource interface Provider { // withdraw removes an NFT from the collection and moves it to the caller - pub fun withdraw(withdrawID: UInt64): @NFT { + access(all) fun withdraw(withdrawID: UInt64): @NFT { post { result.id == withdrawID: "The ID of the withdrawn token must be the same as the requested ID" } @@ -66,42 +66,42 @@ pub contract interface NonFungibleToken { // Interface to mediate deposits to the Collection // - pub resource interface Receiver { + access(all) resource interface Receiver { // deposit takes an NFT as an argument and adds it to the Collection // - pub fun deposit(token: @NFT) + access(all) fun deposit(token: @NFT) } // Interface that an account would commonly // publish for their collection - pub resource interface CollectionPublic { - pub fun deposit(token: @NFT) - pub fun getIDs(): [UInt64] - pub fun borrowNFT(id: UInt64): &NFT + access(all) resource interface CollectionPublic { + access(all) fun deposit(token: @NFT) + access(all) fun getIDs(): [UInt64] + access(all) fun borrowNFT(id: UInt64): &NFT } // Requirement for the the concrete resource type // to be declared in the implementing contract // - pub resource Collection: Provider, Receiver, CollectionPublic { + access(all) resource Collection: Provider, Receiver, CollectionPublic { // Dictionary to hold the NFTs in the Collection - pub var ownedNFTs: @{UInt64: NFT} + access(all) var ownedNFTs: @{UInt64: NFT} // withdraw removes an NFT from the collection and moves it to the caller - pub fun withdraw(withdrawID: UInt64): @NFT + access(all) fun withdraw(withdrawID: UInt64): @NFT // deposit takes a NFT and adds it to the collections dictionary // and adds the ID to the id array - pub fun deposit(token: @NFT) + access(all) fun deposit(token: @NFT) // getIDs returns an array of the IDs that are in the collection - pub fun getIDs(): [UInt64] + access(all) fun getIDs(): [UInt64] // Returns a borrowed reference to an NFT in the collection // so that the caller can read data and call methods from it - pub fun borrowNFT(id: UInt64): &NFT { + access(all) fun borrowNFT(id: UInt64): &NFT { pre { self.ownedNFTs[id] != nil: "NFT does not exist in the collection!" } @@ -110,7 +110,7 @@ pub contract interface NonFungibleToken { // createEmptyCollection creates an empty Collection // and returns it to the caller so that they can own NFTs - pub fun createEmptyCollection(): @Collection { + access(all) fun createEmptyCollection(): @Collection { post { result.ownedNFTs.length == 0: "The created collection must be empty!" } @@ -120,42 +120,42 @@ pub contract interface NonFungibleToken { const realTopShotContract = ` import NonFungibleToken from 0x1d7e57aa55817448 -pub contract TopShot: NonFungibleToken { +access(all) contract TopShot: NonFungibleToken { // ----------------------------------------------------------------------- // TopShot contract Event definitions // ----------------------------------------------------------------------- // emitted when the TopShot contract is created - pub event ContractInitialized() + access(all) event ContractInitialized() // emitted when a new Play struct is created - pub event PlayCreated(id: UInt32, metadata: {String:String}) + access(all) event PlayCreated(id: UInt32, metadata: {String:String}) // emitted when a new series has been triggered by an admin - pub event NewSeriesStarted(newCurrentSeries: UInt32) + access(all) event NewSeriesStarted(newCurrentSeries: UInt32) // Events for Set-Related actions // // emitted when a new Set is created - pub event SetCreated(setID: UInt32, series: UInt32) + access(all) event SetCreated(setID: UInt32, series: UInt32) // emitted when a new play is added to a set - pub event PlayAddedToSet(setID: UInt32, playID: UInt32) + access(all) event PlayAddedToSet(setID: UInt32, playID: UInt32) // emitted when a play is retired from a set and cannot be used to mint - pub event PlayRetiredFromSet(setID: UInt32, playID: UInt32, numMoments: UInt32) + access(all) event PlayRetiredFromSet(setID: UInt32, playID: UInt32, numMoments: UInt32) // emitted when a set is locked, meaning plays cannot be added - pub event SetLocked(setID: UInt32) + access(all) event SetLocked(setID: UInt32) // emitted when a moment is minted from a set - pub event MomentMinted(momentID: UInt64, playID: UInt32, setID: UInt32, serialNumber: UInt32) + access(all) event MomentMinted(momentID: UInt64, playID: UInt32, setID: UInt32, serialNumber: UInt32) // events for Collection-related actions // // emitted when a moment is withdrawn from a collection - pub event Withdraw(id: UInt64, from: Address?) + access(all) event Withdraw(id: UInt64, from: Address?) // emitted when a moment is deposited into a collection - pub event Deposit(id: UInt64, to: Address?) + access(all) event Deposit(id: UInt64, to: Address?) // emitted when a moment is destroyed - pub event MomentDestroyed(id: UInt64) + access(all) event MomentDestroyed(id: UInt64) // ----------------------------------------------------------------------- // TopShot contract-level fields @@ -165,7 +165,7 @@ pub contract TopShot: NonFungibleToken { // Series that this set belongs to // Series is a concept that indicates a group of sets through time // Many sets can exist at a time, but only one series - pub var currentSeries: UInt32 + access(all) var currentSeries: UInt32 // variable size dictionary of Play structs access(self) var playDatas: {UInt32: Play} @@ -179,18 +179,18 @@ pub contract TopShot: NonFungibleToken { // the ID that is used to create Plays. // Every time a Play is created, playID is assigned // to the new Play's ID and then is incremented by 1. - pub var nextPlayID: UInt32 + access(all) var nextPlayID: UInt32 // the ID that is used to create Sets. Every time a Set is created // setID is assigned to the new set's ID and then is incremented by 1. - pub var nextSetID: UInt32 + access(all) var nextSetID: UInt32 // the total number of Top shot moment NFTs that have been created // Because NFTs can be destroyed, it doesn't necessarily mean that this // reflects the total number of NFTs in existence, just the number that // have been minted to date. // Is also used as global moment IDs for minting - pub var totalSupply: UInt64 + access(all) var totalSupply: UInt64 // ----------------------------------------------------------------------- // TopShot contract-level Composite Type DEFINITIONS @@ -210,16 +210,16 @@ pub contract TopShot: NonFungibleToken { // its metadata. The Plays are publicly accessible, so anyone can // read the metadata associated with a specific play ID // - pub struct Play { + access(all) struct Play { // the unique ID that the Play has - pub let playID: UInt32 + access(all) let playID: UInt32 // Stores all the metadata about the Play as a string mapping // This is not the long term way we will do metadata. Just a temporary // construct while we figure out a better way to do metadata // - pub let metadata: {String: String} + access(all) let metadata: {String: String} init(metadata: {String: String}) { pre { @@ -244,19 +244,19 @@ pub contract TopShot: NonFungibleToken { // about a set but not have the ability to modify any data in the // private set resource // - pub struct SetData { + access(all) struct SetData { // unique ID for the set - pub let setID: UInt32 + access(all) let setID: UInt32 // Name of the Set // ex. "Times when the Toronto Raptors choked in the playoffs" - pub let name: String + access(all) let name: String // Series that this set belongs to // Series is a concept that indicates a group of sets through time // Many sets can exist at a time, but only one series - pub let series: UInt32 + access(all) let series: UInt32 init(name: String) { pre { @@ -293,21 +293,21 @@ pub contract TopShot: NonFungibleToken { // // If retireAll() and lock() are called back to back, // the Set is closed off forever and nothing more can be done with it - pub resource Set { + access(all) resource Set { // unique ID for the set - pub let setID: UInt32 + access(all) let setID: UInt32 // Array of plays that are a part of this set // When a play is added to the set, its ID gets appended here // The ID does not get removed from this array when a play is retired - pub var plays: [UInt32] + access(all) var plays: [UInt32] // Indicates if a play in this set can be minted // A play is set to false when it is added to a set // to indicate that it is still active // When the play is retired, this is set to true and cannot be changed - pub var retired: {UInt32: Bool} + access(all) var retired: {UInt32: Bool} // Indicates if the set is currently locked // When a set is created, it is unlocked @@ -318,13 +318,13 @@ pub contract TopShot: NonFungibleToken { // If a set is locked, plays cannot be added, but // moments can still be minted from plays // that already had been added to it. - pub var locked: Bool + access(all) var locked: Bool // Indicates the number of moments // that have been minted per play in this set // When a moment is minted, this value is stored in the moment to // show where in the play set it is so far. ex. 13 of 60 - pub var numberMintedPerPlay: {UInt32: UInt32} + access(all) var numberMintedPerPlay: {UInt32: UInt32} init(name: String) { self.setID = TopShot.nextSetID @@ -346,7 +346,7 @@ pub contract TopShot: NonFungibleToken { // The set needs to be not locked // The play can't have already been added to the set // - pub fun addPlay(playID: UInt32) { + access(all) fun addPlay(playID: UInt32) { pre { TopShot.playDatas[playID] != nil: "Cannot add the Play to Set: Play doesn't exist" !self.locked: "Cannot add the play to the Set after the set has been locked" @@ -370,7 +370,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: playIDs: The IDs of the plays that are being added // as an array // - pub fun addPlays(playIDs: [UInt32]) { + access(all) fun addPlays(playIDs: [UInt32]) { for play in playIDs { self.addPlay(playID: play) } @@ -383,7 +383,7 @@ pub contract TopShot: NonFungibleToken { // Pre-Conditions: // The play needs to be an existing play that is currently open for minting // - pub fun retirePlay(playID: UInt32) { + access(all) fun retirePlay(playID: UInt32) { pre { self.retired[playID] != nil: "Cannot retire the Play: Play doesn't exist in this set!" } @@ -398,7 +398,7 @@ pub contract TopShot: NonFungibleToken { // retireAll retires all the plays in the set // Afterwards, none of the retired plays will be able to mint new moments // - pub fun retireAll() { + access(all) fun retireAll() { for play in self.plays { self.retirePlay(playID: play) } @@ -408,7 +408,7 @@ pub contract TopShot: NonFungibleToken { // // Pre-Conditions: // The set cannot already have been locked - pub fun lock() { + access(all) fun lock() { if !self.locked { self.locked = true emit SetLocked(setID: self.setID) @@ -424,7 +424,7 @@ pub contract TopShot: NonFungibleToken { // // Returns: The NFT that was minted // - pub fun mintMoment(playID: UInt32): @NFT { + access(all) fun mintMoment(playID: UInt32): @NFT { pre { self.retired[playID] != nil: "Cannot mint the moment: This play doesn't exist" !self.retired[playID]!: "Cannot mint the moment from this play: This play has been retired" @@ -453,7 +453,7 @@ pub contract TopShot: NonFungibleToken { // // Returns: Collection object that contains all the moments that were minted // - pub fun batchMintMoment(playID: UInt32, quantity: UInt64): @Collection { + access(all) fun batchMintMoment(playID: UInt32, quantity: UInt64): @Collection { let newCollection <- create Collection() var i: UInt64 = 0 @@ -466,17 +466,17 @@ pub contract TopShot: NonFungibleToken { } } - pub struct MomentData { + access(all) struct MomentData { // the ID of the Set that the Moment comes from - pub let setID: UInt32 + access(all) let setID: UInt32 // the ID of the Play that the moment references - pub let playID: UInt32 + access(all) let playID: UInt32 // the place in the play that this moment was minted // Otherwise know as the serial number - pub let serialNumber: UInt32 + access(all) let serialNumber: UInt32 init(setID: UInt32, playID: UInt32, serialNumber: UInt32) { self.setID = setID @@ -488,13 +488,13 @@ pub contract TopShot: NonFungibleToken { // The resource that represents the Moment NFTs // - pub resource NFT: NonFungibleToken.INFT { + access(all) resource NFT: NonFungibleToken.INFT { // global unique moment ID - pub let id: UInt64 + access(all) let id: UInt64 // struct of moment metadata - pub let data: MomentData + access(all) let data: MomentData init(serialNumber: UInt32, playID: UInt32, setID: UInt32) { // Increment the global moment IDs @@ -517,7 +517,7 @@ pub contract TopShot: NonFungibleToken { // allows the owner to perform important functions to modify the // various aspects of the plays, sets, and moments // - pub resource Admin { + access(all) resource Admin { // createPlay creates a new Play struct // and stores it in the plays dictionary in the TopShot smart contract @@ -527,7 +527,7 @@ pub contract TopShot: NonFungibleToken { // (because we all know Kevin Durant is not 6'9") // // Returns: the ID of the new Play object - pub fun createPlay(metadata: {String: String}): UInt32 { + access(all) fun createPlay(metadata: {String: String}): UInt32 { // Create the new Play var newPlay = Play(metadata: metadata) let newID = newPlay.playID @@ -544,7 +544,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: name: The name of the set // series: The series that the set belongs to // - pub fun createSet(name: String) { + access(all) fun createSet(name: String) { // Create the new Set var newSet <- create Set(name: name) @@ -560,7 +560,7 @@ pub contract TopShot: NonFungibleToken { // Returns: A reference to the set with all of the fields // and methods exposed // - pub fun borrowSet(setID: UInt32): &Set { + access(all) fun borrowSet(setID: UInt32): &Set { pre { TopShot.sets[setID] != nil: "Cannot borrow Set: The Set doesn't exist" } @@ -573,7 +573,7 @@ pub contract TopShot: NonFungibleToken { // // Returns: The new series number // - pub fun startNewSeries(): UInt32 { + access(all) fun startNewSeries(): UInt32 { // end the current series and start a new one // by incrementing the TopShot series number TopShot.currentSeries = TopShot.currentSeries + UInt32(1) @@ -585,19 +585,19 @@ pub contract TopShot: NonFungibleToken { // createNewAdmin creates a new Admin Resource // - pub fun createNewAdmin(): @Admin { + access(all) fun createNewAdmin(): @Admin { return <-create Admin() } } // This is the interface that users can cast their moment Collection as // to allow others to deposit moments into their collection - pub resource interface MomentCollectionPublic { - pub fun deposit(token: @NonFungibleToken.NFT) - pub fun batchDeposit(tokens: @NonFungibleToken.Collection) - pub fun getIDs(): [UInt64] - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT - pub fun borrowMoment(id: UInt64): &TopShot.NFT? { + access(all) resource interface MomentCollectionPublic { + access(all) fun deposit(token: @NonFungibleToken.NFT) + access(all) fun batchDeposit(tokens: @NonFungibleToken.Collection) + access(all) fun getIDs(): [UInt64] + access(all) fun borrowNFT(id: UInt64): &NonFungibleToken.NFT + access(all) fun borrowMoment(id: UInt64): &TopShot.NFT? { // If the result isn't nil, the id of the returned reference // should be the same as the argument to the function post { @@ -610,17 +610,17 @@ pub contract TopShot: NonFungibleToken { // Collection is a resource that every user who owns NFTs // will store in their account to manage their NFTS // - pub resource Collection: MomentCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { + access(all) resource Collection: MomentCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { // Dictionary of Moment conforming tokens // NFT is a resource type with a UInt64 ID field - pub var ownedNFTs: @{UInt64: NonFungibleToken.NFT} + access(all) var ownedNFTs: @{UInt64: NonFungibleToken.NFT} init() { self.ownedNFTs <- {} } // withdraw removes an Moment from the collection and moves it to the caller - pub fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { + access(all) fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { let token <- self.ownedNFTs.remove(key: withdrawID) ?? panic("Cannot withdraw: Moment does not exist in the collection") @@ -630,7 +630,7 @@ pub contract TopShot: NonFungibleToken { } // batchWithdraw withdraws multiple tokens and returns them as a Collection - pub fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { + access(all) fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { var batchCollection <- create Collection() // iterate through the ids and withdraw them from the collection @@ -641,7 +641,7 @@ pub contract TopShot: NonFungibleToken { } // deposit takes a Moment and adds it to the collections dictionary - pub fun deposit(token: @NonFungibleToken.NFT) { + access(all) fun deposit(token: @NonFungibleToken.NFT) { let token <- token as! @TopShot.NFT let id = token.id @@ -657,7 +657,7 @@ pub contract TopShot: NonFungibleToken { // batchDeposit takes a Collection object as an argument // and deposits each contained NFT into this collection - pub fun batchDeposit(tokens: @NonFungibleToken.Collection) { + access(all) fun batchDeposit(tokens: @NonFungibleToken.Collection) { let keys = tokens.getIDs() // iterate through the keys in the collection and deposit each one @@ -668,7 +668,7 @@ pub contract TopShot: NonFungibleToken { } // getIDs returns an array of the IDs that are in the collection - pub fun getIDs(): [UInt64] { + access(all) fun getIDs(): [UInt64] { return self.ownedNFTs.keys } @@ -678,7 +678,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: id: The ID of the NFT to get the reference for // // Returns: A reference to the NFT - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { + access(all) fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { return (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! } @@ -692,7 +692,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: id: The ID of the NFT to get the reference for // // Returns: A reference to the NFT - pub fun borrowMoment(id: UInt64): &TopShot.NFT? { + access(all) fun borrowMoment(id: UInt64): &TopShot.NFT? { if self.ownedNFTs[id] != nil { let ref = (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! return ref as! &TopShot.NFT @@ -720,14 +720,14 @@ pub contract TopShot: NonFungibleToken { // Once they have a Collection in their storage, they are able to receive // Moments in transactions // - pub fun createEmptyCollection(): @NonFungibleToken.Collection { + access(all) fun createEmptyCollection(): @NonFungibleToken.Collection { return <-create TopShot.Collection() } // getAllPlays returns all the plays in topshot // // Returns: An array of all the plays that have been created - pub fun getAllPlays(): [TopShot.Play] { + access(all) fun getAllPlays(): [TopShot.Play] { return TopShot.playDatas.values } @@ -736,7 +736,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: playID: The id of the play that is being searched // // Returns: The metadata as a String to String mapping optional - pub fun getPlayMetaData(playID: UInt32): {String: String}? { + access(all) fun getPlayMetaData(playID: UInt32): {String: String}? { return self.playDatas[playID]?.metadata } @@ -749,7 +749,7 @@ pub contract TopShot: NonFungibleToken { // field: The field to search for // // Returns: The metadata field as a String Optional - pub fun getPlayMetaDataByField(playID: UInt32, field: String): String? { + access(all) fun getPlayMetaDataByField(playID: UInt32, field: String): String? { // Don't force a revert if the playID or field is invalid if let play = TopShot.playDatas[playID] { return play.metadata[field] @@ -764,7 +764,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: setID: The id of the set that is being searched // // Returns: The name of the set - pub fun getSetName(setID: UInt32): String? { + access(all) fun getSetName(setID: UInt32): String? { // Don't force a revert if the setID is invalid return TopShot.setDatas[setID]?.name } @@ -775,7 +775,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: setID: The id of the set that is being searched // // Returns: The series that the set belongs to - pub fun getSetSeries(setID: UInt32): UInt32? { + access(all) fun getSetSeries(setID: UInt32): UInt32? { // Don't force a revert if the setID is invalid return TopShot.setDatas[setID]?.series } @@ -786,7 +786,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: setName: The name of the set that is being searched // // Returns: An array of the IDs of the set if it exists, or nil if doesn't - pub fun getSetIDsByName(setName: String): [UInt32]? { + access(all) fun getSetIDsByName(setName: String): [UInt32]? { var setIDs: [UInt32] = [] // iterate through all the setDatas and search for the name @@ -811,7 +811,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: setID: The id of the set that is being searched // // Returns: An array of play IDs - pub fun getPlaysInSet(setID: UInt32): [UInt32]? { + access(all) fun getPlaysInSet(setID: UInt32): [UInt32]? { // Don't force a revert if the setID is invalid return TopShot.sets[setID]?.plays } @@ -825,7 +825,7 @@ pub contract TopShot: NonFungibleToken { // playID: The id of the play that is being searched // // Returns: Boolean indicating if the edition is retired or not - pub fun isEditionRetired(setID: UInt32, playID: UInt32): Bool? { + access(all) fun isEditionRetired(setID: UInt32, playID: UInt32): Bool? { // Don't force a revert if the set or play ID is invalid // remove the set from the dictionary to ket its field if let setToRead <- TopShot.sets.remove(key: setID) { @@ -849,7 +849,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: setID: The id of the set that is being searched // // Returns: Boolean indicating if the set is locked or not - pub fun isSetLocked(setID: UInt32): Bool? { + access(all) fun isSetLocked(setID: UInt32): Bool? { // Don't force a revert if the setID is invalid return TopShot.sets[setID]?.locked } @@ -862,7 +862,7 @@ pub contract TopShot: NonFungibleToken { // // Returns: The total number of moments // that have been minted from an edition - pub fun getNumMomentsInEdition(setID: UInt32, playID: UInt32): UInt32? { + access(all) fun getNumMomentsInEdition(setID: UInt32, playID: UInt32): UInt32? { // Don't force a revert if the set or play ID is invalid // remove the set from the dictionary to get its field if let setToRead <- TopShot.sets.remove(key: setID) { @@ -912,18 +912,18 @@ const realTopShotShardedCollectionContract = ` import NonFungibleToken from 0x1d7e57aa55817448 import TopShot from 0x0b2a3299cc857e29 -pub contract TopShotShardedCollection { +access(all) contract TopShotShardedCollection { // ShardedCollection stores a dictionary of TopShot Collections // A Moment is stored in the field that corresponds to its id % numBuckets - pub resource ShardedCollection: TopShot.MomentCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { + access(all) resource ShardedCollection: TopShot.MomentCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { // Dictionary of topshot collections - pub var collections: @{UInt64: TopShot.Collection} + access(all) var collections: @{UInt64: TopShot.Collection} // The number of buckets to split Moments into // This makes storage more efficient and performant - pub let numBuckets: UInt64 + access(all) let numBuckets: UInt64 init(numBuckets: UInt64) { self.collections <- {} @@ -941,7 +941,7 @@ pub contract TopShotShardedCollection { // withdraw removes a Moment from one of the Collections // and moves it to the caller - pub fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { + access(all) fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { post { result.id == withdrawID: "The ID of the withdrawn NFT is incorrect" } @@ -960,7 +960,7 @@ pub contract TopShotShardedCollection { // // Returns: @NonFungibleToken.Collection a Collection containing the moments // that were withdrawn - pub fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { + access(all) fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { var batchCollection <- TopShot.createEmptyCollection() // Iterate through the ids and withdraw them from the Collection @@ -971,7 +971,7 @@ pub contract TopShotShardedCollection { } // deposit takes a Moment and adds it to the Collections dictionary - pub fun deposit(token: @NonFungibleToken.NFT) { + access(all) fun deposit(token: @NonFungibleToken.NFT) { // Find the bucket this corresponds to let bucket = token.id % self.numBuckets @@ -988,7 +988,7 @@ pub contract TopShotShardedCollection { // batchDeposit takes a Collection object as an argument // and deposits each contained NFT into this Collection - pub fun batchDeposit(tokens: @NonFungibleToken.Collection) { + access(all) fun batchDeposit(tokens: @NonFungibleToken.Collection) { let keys = tokens.getIDs() // Iterate through the keys in the Collection and deposit each one @@ -999,7 +999,7 @@ pub contract TopShotShardedCollection { } // getIDs returns an array of the IDs that are in the Collection - pub fun getIDs(): [UInt64] { + access(all) fun getIDs(): [UInt64] { var ids: [UInt64] = [] // Concatenate IDs in all the Collections @@ -1013,7 +1013,7 @@ pub contract TopShotShardedCollection { // borrowNFT Returns a borrowed reference to a Moment in the Collection // so that the caller can read data and call methods from it - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { + access(all) fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { post { result.id == id: "The ID of the reference is incorrect" } @@ -1035,7 +1035,7 @@ pub contract TopShotShardedCollection { // Parameters: id: The ID of the NFT to get the reference for // // Returns: A reference to the NFT - pub fun borrowMoment(id: UInt64): &TopShot.NFT? { + access(all) fun borrowMoment(id: UInt64): &TopShot.NFT? { // Get the bucket of the nft to be borrowed let bucket = id % self.numBuckets @@ -1051,7 +1051,7 @@ pub contract TopShotShardedCollection { } // Creates an empty ShardedCollection and returns it to the caller - pub fun createEmptyCollection(numBuckets: UInt64): @ShardedCollection { + access(all) fun createEmptyCollection(numBuckets: UInt64): @ShardedCollection { return <-create ShardedCollection(numBuckets: numBuckets) } } @@ -1061,12 +1061,12 @@ const realTopshotAdminReceiverContract = ` import TopShot from 0x0b2a3299cc857e29 import TopShotShardedCollection from 0x0b2a3299cc857e29 -pub contract TopshotAdminReceiver { +access(all) contract TopshotAdminReceiver { // storeAdmin takes a TopShot Admin resource and // saves it to the account storage of the account // where the contract is deployed - pub fun storeAdmin(newAdmin: @TopShot.Admin) { + access(all) fun storeAdmin(newAdmin: @TopShot.Admin) { self.account.save(<-newAdmin, to: /storage/TopShotAdmin) } diff --git a/runtime/predeclaredvalues_test.go b/runtime/predeclaredvalues_test.go index 069838164b..6a237de985 100644 --- a/runtime/predeclaredvalues_test.go +++ b/runtime/predeclaredvalues_test.go @@ -44,8 +44,8 @@ func TestRuntimePredeclaredValues(t *testing.T) { } contract := []byte(` - pub contract C { - pub fun foo(): Int { + access(all) contract C { + access(all) fun foo(): Int { return foo } } @@ -54,7 +54,7 @@ func TestRuntimePredeclaredValues(t *testing.T) { script := []byte(` import C from 0x1 - pub fun main(): Int { + access(all) fun main(): Int { return foo + C.foo() } `) diff --git a/runtime/program_params_validation_test.go b/runtime/program_params_validation_test.go index 0ba6e4e0c4..39662283c5 100644 --- a/runtime/program_params_validation_test.go +++ b/runtime/program_params_validation_test.go @@ -113,10 +113,10 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: Foo) { + access(all) fun main(arg: Foo) { } - pub struct Foo { + access(all) struct Foo { } ` @@ -128,11 +128,11 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: Foo?) { + access(all) fun main(arg: Foo?) { } - pub struct Foo { - pub var funcTypedField: fun(): Void + access(all) struct Foo { + access(all) var funcTypedField: fun(): Void init() { self.funcTypedField = fun() {} @@ -148,7 +148,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: AnyStruct?) { + access(all) fun main(arg: AnyStruct?) { } ` @@ -160,13 +160,13 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: {Bar}) { + access(all) fun main(arg: {Bar}) { } - pub struct Foo: Bar { + access(all) struct Foo: Bar { } - pub struct interface Bar { + access(all) struct interface Bar { } ` @@ -178,11 +178,11 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: {Bar}?) { + access(all) fun main(arg: {Bar}?) { } - pub struct interface Bar { - pub var funcTypedField: fun():Void + access(all) struct interface Bar { + access(all) var funcTypedField: fun():Void } ` @@ -194,11 +194,11 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: @Baz?) { + access(all) fun main(arg: @Baz?) { destroy arg } - pub resource Baz { + access(all) resource Baz { } ` @@ -210,7 +210,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: @AnyResource?) { + access(all) fun main(arg: @AnyResource?) { destroy arg } ` @@ -223,10 +223,10 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: Foo?) { + access(all) fun main(arg: Foo?) { } - pub contract Foo { + access(all) contract Foo { } ` @@ -238,7 +238,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: [String]) { + access(all) fun main(arg: [String]) { } ` @@ -255,7 +255,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: [fun():Void]) { + access(all) fun main(arg: [fun():Void]) { } ` @@ -272,7 +272,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: {String: Bool}) { + access(all) fun main(arg: {String: Bool}) { } ` @@ -289,7 +289,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: Capability<&Int>?) { + access(all) fun main(arg: Capability<&Int>?) { } ` @@ -301,7 +301,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: {String: fun():Void}) { + access(all) fun main(arg: {String: fun():Void}) { } ` @@ -324,7 +324,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := fmt.Sprintf(` - pub fun main(arg: %s?) { + access(all) fun main(arg: %s?) { } `, typString, @@ -406,7 +406,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := fmt.Sprintf(` - pub fun main(arg: %s) { + access(all) fun main(arg: %s) { }`, test.typeSignature, ) @@ -430,10 +430,10 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: AnyStruct?) { + access(all) fun main(arg: AnyStruct?) { } - pub struct Foo { - pub var nonImportableField: PublicAccount.Keys? + access(all) struct Foo { + access(all) var nonImportableField: PublicAccount.Keys? init() { self.nonImportableField = nil } @@ -448,15 +448,15 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: {Bar}?) { + access(all) fun main(arg: {Bar}?) { } - pub struct Foo: Bar { - pub var nonImportableField: PublicAccount.Keys? + access(all) struct Foo: Bar { + access(all) var nonImportableField: PublicAccount.Keys? init() { self.nonImportableField = nil } } - pub struct interface Bar { + access(all) struct interface Bar { } ` @@ -468,7 +468,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: AnyStruct) { + access(all) fun main(arg: AnyStruct) { } ` @@ -482,7 +482,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() script := ` - pub fun main(arg: [AnyStruct]) { + access(all) fun main(arg: [AnyStruct]) { } ` @@ -502,7 +502,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() err := executeScript(t, - `pub fun main(arg: HashAlgorithm) {}`, + `access(all) fun main(arg: HashAlgorithm) {}`, cadence.NewEnum( []cadence.Value{ cadence.NewUInt8(0), @@ -519,7 +519,7 @@ func TestRuntimeScriptParameterTypeValidation(t *testing.T) { t.Parallel() err := executeScript(t, - `pub fun main(arg: SignatureAlgorithm) {}`, + `access(all) fun main(arg: SignatureAlgorithm) {}`, cadence.NewEnum( []cadence.Value{ cadence.NewUInt8(0), @@ -637,8 +637,8 @@ func TestRuntimeTransactionParameterTypeValidation(t *testing.T) { Address: common.MustBytesToAddress([]byte{0x1}), Name: "C", }: []byte(` - pub contract C { - pub struct Foo {} + access(all) contract C { + access(all) struct Foo {} } `), } @@ -661,9 +661,9 @@ func TestRuntimeTransactionParameterTypeValidation(t *testing.T) { Address: common.MustBytesToAddress([]byte{0x1}), Name: "C", }: []byte(` - pub contract C { - pub struct Foo { - pub var funcTypedField: fun (): Void + access(all) contract C { + access(all) struct Foo { + access(all) var funcTypedField: fun (): Void init() { self.funcTypedField = fun () {} @@ -706,10 +706,10 @@ func TestRuntimeTransactionParameterTypeValidation(t *testing.T) { Address: common.MustBytesToAddress([]byte{0x1}), Name: "C", }: []byte(` - pub contract C { - pub struct Foo: Bar {} + access(all) contract C { + access(all) struct Foo: Bar {} - pub struct interface Bar {} + access(all) struct interface Bar {} } `), } @@ -731,9 +731,9 @@ func TestRuntimeTransactionParameterTypeValidation(t *testing.T) { Address: common.MustBytesToAddress([]byte{0x1}), Name: "C", }: []byte(` - pub contract C { - pub struct interface Bar { - pub var funcTypedField: fun (): Void + access(all) contract C { + access(all) struct interface Bar { + access(all) var funcTypedField: fun (): Void } } `), @@ -762,8 +762,8 @@ func TestRuntimeTransactionParameterTypeValidation(t *testing.T) { Address: common.MustBytesToAddress([]byte{0x1}), Name: "C", }: []byte(` - pub contract C { - pub resource Baz {} + access(all) contract C { + access(all) resource Baz {} } `), } @@ -809,7 +809,7 @@ func TestRuntimeTransactionParameterTypeValidation(t *testing.T) { Address: common.MustBytesToAddress([]byte{0x1}), Name: "C", }: []byte(` - pub contract C {} + access(all) contract C {} `), } script := ` @@ -1016,9 +1016,9 @@ func TestRuntimeTransactionParameterTypeValidation(t *testing.T) { Address: common.MustBytesToAddress([]byte{0x1}), Name: "C", }: []byte(` - pub contract C { - pub struct Foo { - pub var nonImportableField: PublicAccount.Keys? + access(all) contract C { + access(all) struct Foo { + access(all) var nonImportableField: PublicAccount.Keys? init() { self.nonImportableField = nil @@ -1046,15 +1046,15 @@ func TestRuntimeTransactionParameterTypeValidation(t *testing.T) { Address: common.MustBytesToAddress([]byte{0x1}), Name: "C", }: []byte(` - pub contract C { - pub struct Foo: Bar { - pub var nonImportableField: PublicAccount.Keys? + access(all) contract C { + access(all) struct Foo: Bar { + access(all) var nonImportableField: PublicAccount.Keys? init() { self.nonImportableField = nil } } - pub struct interface Bar {} + access(all) struct interface Bar {} } `), } diff --git a/runtime/resource_duplicate_test.go b/runtime/resource_duplicate_test.go index 6e439a6a34..7a1eb38ba4 100644 --- a/runtime/resource_duplicate_test.go +++ b/runtime/resource_duplicate_test.go @@ -119,13 +119,23 @@ func TestRuntimeResourceDuplicationWithContractTransfer(t *testing.T) { const holderContract = ` import FlowToken from 0x1 - pub contract Holder { + access(all) contract Holder { - pub (set) var content: @FlowToken.Vault? + access(all) var content: @FlowToken.Vault? init() { self.content <- nil } + + access(all) fun setContent(_ vault: @FlowToken.Vault?) { + self.content <-! vault + } + + access(all) fun swapContent(_ vault: @FlowToken.Vault?): @FlowToken.Vault? { + let oldVault <- self.content <- vault + return <-oldVault + } + } ` err = runtime.ExecuteTransaction( @@ -157,20 +167,20 @@ func TestRuntimeResourceDuplicationWithContractTransfer(t *testing.T) { let vault <- FlowToken.createEmptyVault() as! @FlowToken.Vault? // Move vault into the contract - Holder.content <-! vault + Holder.setContent(<-vault) // Save the contract into storage (invalid, even if same account) acct.save(Holder as AnyStruct, to: /storage/holder) // Move vault back out of the contract - let vault2 <- Holder.content <- nil + let vault2 <- Holder.swapContent(nil) let unwrappedVault2 <- vault2! // Load the contract back from storage let dupeContract = acct.load(from: /storage/holder)! as! Holder // Move the vault of of the duplicated contract - let dupeVault <- dupeContract.content <- nil + let dupeVault <- dupeContract.swapContent(nil) let unwrappedDupeVault <- dupeVault! // Deposit the duplicated vault into the original vault diff --git a/runtime/resourcedictionary_test.go b/runtime/resourcedictionary_test.go index e43d231db1..8dc82aef6e 100644 --- a/runtime/resourcedictionary_test.go +++ b/runtime/resourcedictionary_test.go @@ -32,17 +32,17 @@ import ( ) const resourceDictionaryContract = ` - pub contract Test { + access(all) contract Test { - pub resource R { + access(all) resource R { - pub var value: Int + access(all) var value: Int init(_ value: Int) { self.value = value } - pub fun increment() { + access(all) fun increment() { self.value = self.value + 1 } @@ -52,34 +52,38 @@ const resourceDictionaryContract = ` } } - pub fun createR(_ value: Int): @R { + access(all) fun createR(_ value: Int): @R { return <-create R(value) } - pub resource C { + access(all) resource C { - pub(set) var rs: @{String: R} + access(all) var rs: @{String: R} init() { self.rs <- {} } - pub fun remove(_ id: String): @R { + access(all) fun remove(_ id: String): @R { let r <- self.rs.remove(key: id) ?? panic("missing") return <-r } - pub fun insert(_ id: String, _ r: @R): @R? { + access(all) fun insert(_ id: String, _ r: @R): @R? { let old <- self.rs.insert(key: id, <-r) return <- old } + access(all) fun forceInsert(_ id: String, _ r: @R) { + self.rs[id] <-! r + } + destroy() { destroy self.rs } } - pub fun createC(): @C { + access(all) fun createC(): @C { return <-create C() } } @@ -167,8 +171,8 @@ func TestRuntimeResourceDictionaryValues(t *testing.T) { prepare(signer: AuthAccount) { let c = signer.borrow<&Test.C>(from: /storage/c)! - c.rs["a"] <-! Test.createR(1) - c.rs["b"] <-! Test.createR(2) + c.forceInsert("a", <- Test.createR(1)) + c.forceInsert("b", <- Test.createR(2)) } } `) @@ -250,8 +254,8 @@ func TestRuntimeResourceDictionaryValues(t *testing.T) { prepare(signer: AuthAccount) { let c = signer.borrow<&Test.C>(from: /storage/c)! log(c.rs["b"]?.value) - let existing <- c.rs["b"] <- Test.createR(4) - destroy existing + destroy c.remove("b") + c.forceInsert("b", <- Test.createR(4)) log(c.rs["b"]?.value) } } @@ -290,8 +294,7 @@ func TestRuntimeResourceDictionaryValues(t *testing.T) { prepare(signer: AuthAccount) { let c = signer.borrow<&Test.C>(from: /storage/c)! log(c.rs["b"]?.value) - let existing <- c.rs["b"] <- nil - destroy existing + destroy c.remove("b") log(c.rs["b"]?.value) } } @@ -351,7 +354,7 @@ func TestRuntimeResourceDictionaryValues(t *testing.T) { } let c2 <- Test.createC() - c2.rs["x"] <-! Test.createR(10) + c2.forceInsert("x", <-Test.createR(10)) signer.save(<-c2, to: /storage/c) } } @@ -389,49 +392,57 @@ func TestRuntimeResourceDictionaryValues_Nested(t *testing.T) { addressValue := cadence.BytesToAddress([]byte{0xCA, 0xDE}) contract := []byte(` - pub contract Test { + access(all) contract Test { - pub resource R { + access(all) resource R { - pub var value: Int + access(all) var value: Int init(_ value: Int) { self.value = value } - pub fun increment() { + access(all) fun increment() { self.value = self.value + 1 } } - pub fun createR(_ value: Int): @R { + access(all) fun createR(_ value: Int): @R { return <-create R(value) } - pub resource C2 { + access(all) resource C2 { - pub(set) var rs: @{String: R} + access(all) var rs: @{String: R} init() { self.rs <- {} } - pub fun value(key: String): Int? { + access(all) fun value(key: String): Int? { return self.rs[key]?.value } + access(all) fun forceInsert(_ id: String, _ r: @R) { + self.rs[id] <-! r + } + destroy() { destroy self.rs } } - pub fun createC2(): @C2 { + access(all) fun createC2(): @C2 { return <-create C2() } - pub resource C { + access(all) resource C { - pub(set) var c2s: @{String: C2} + access(all) var c2s: @{String: C2} + + access(all) fun forceInsert(_ id: String, _ c: @C2) { + self.c2s[id] <-! c + } init() { self.c2s <- {} @@ -442,7 +453,7 @@ func TestRuntimeResourceDictionaryValues_Nested(t *testing.T) { } } - pub fun createC(): @C { + access(all) fun createC(): @C { return <-create C() } } @@ -524,9 +535,9 @@ func TestRuntimeResourceDictionaryValues_Nested(t *testing.T) { prepare(signer: AuthAccount) { let c = signer.borrow<&Test.C>(from: /storage/c)! let c2 <- Test.createC2() - c2.rs["a"] <-! Test.createR(1) - c2.rs["b"] <-! Test.createR(2) - c.c2s["x"] <-! c2 + c2.forceInsert("a", <- Test.createR(1)) + c2.forceInsert("b", <- Test.createR(2)) + c.forceInsert("x", <- c2) } } `) @@ -581,28 +592,32 @@ func TestRuntimeResourceDictionaryValues_DictionaryTransfer(t *testing.T) { runtime := newTestInterpreterRuntime() contract := []byte(` - pub contract Test { + access(all) contract Test { - pub resource R { + access(all) resource R { - pub var value: Int + access(all) var value: Int init(_ value: Int) { self.value = value } - pub fun increment() { + access(all) fun increment() { self.value = self.value + 1 } } - pub fun createR(_ value: Int): @R { + access(all) fun createR(_ value: Int): @R { return <-create R(value) } - pub resource C { + access(all) resource C { + + access(all) var rs: @{String: R} - pub(set) var rs: @{String: R} + access(all) fun setRs(_ s: String, _ r: @R) { + self.rs[s] <-! r + } init() { self.rs <- {} @@ -613,7 +628,7 @@ func TestRuntimeResourceDictionaryValues_DictionaryTransfer(t *testing.T) { } } - pub fun createC(): @C { + access(all) fun createC(): @C { return <-create C() } } @@ -638,8 +653,8 @@ func TestRuntimeResourceDictionaryValues_DictionaryTransfer(t *testing.T) { prepare(signer1: AuthAccount, signer2: AuthAccount) { let c <- Test.createC() - c.rs["a"] <-! Test.createR(1) - c.rs["b"] <-! Test.createR(2) + c.setRs("a", <- Test.createR(1)) + c.setRs("b", <- Test.createR(2)) signer1.save(<-c, to: /storage/c) } } @@ -712,7 +727,7 @@ func TestRuntimeResourceDictionaryValues_DictionaryTransfer(t *testing.T) { prepare(signer1: AuthAccount, signer2: AuthAccount) { let c <- signer1.load<@Test.C>(from: /storage/c) ?? panic("missing C") - c.rs["x"] <-! Test.createR(42) + c.setRs("x", <- Test.createR(42)) signer2.save(<-c, to: /storage/c2) } } @@ -749,8 +764,8 @@ func TestRuntimeResourceDictionaryValues_Removal(t *testing.T) { prepare(signer: AuthAccount) { let c <- Test.createC() - c.rs["a"] <-! Test.createR(1) - c.rs["b"] <-! Test.createR(2) + c.forceInsert("a", <- Test.createR(1)) + c.forceInsert("b", <- Test.createR(2)) signer.save(<-c, to: /storage/c) } } @@ -878,8 +893,8 @@ func TestRuntimeSResourceDictionaryValues_Destruction(t *testing.T) { prepare(signer: AuthAccount) { let c <- Test.createC() - c.rs["a"] <-! Test.createR(1) - c.rs["b"] <-! Test.createR(2) + c.forceInsert("a", <- Test.createR(1)) + c.forceInsert("b", <- Test.createR(2)) signer.save(<-c, to: /storage/c) } } @@ -992,8 +1007,8 @@ func TestRuntimeResourceDictionaryValues_Insertion(t *testing.T) { prepare(signer: AuthAccount) { let c <- Test.createC() - c.rs["a"] <-! Test.createR(1) - c.rs["b"] <-! Test.createR(2) + c.forceInsert("a", <- Test.createR(1)) + c.forceInsert("b", <- Test.createR(2)) signer.save(<-c, to: /storage/c) } } @@ -1304,11 +1319,11 @@ func BenchmarkRuntimeResourceDictionaryValues(b *testing.B) { addressValue := cadence.BytesToAddress([]byte{0xCA, 0xDE}) contract := []byte(` - pub contract Test { + access(all) contract Test { - pub resource R {} + access(all) resource R {} - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } } diff --git a/runtime/rlp_test.go b/runtime/rlp_test.go index 5f4bb05a07..11cae14e66 100644 --- a/runtime/rlp_test.go +++ b/runtime/rlp_test.go @@ -38,7 +38,7 @@ func TestRLPDecodeString(t *testing.T) { script := []byte(` - pub fun main(_ data: [UInt8]): [UInt8] { + access(all) fun main(_ data: [UInt8]): [UInt8] { return RLP.decodeString(data) } `) @@ -181,7 +181,7 @@ func TestRLPDecodeList(t *testing.T) { script := []byte(` - pub fun main(_ data: [UInt8]): [[UInt8]] { + access(all) fun main(_ data: [UInt8]): [[UInt8]] { return RLP.decodeList(data) } `) diff --git a/runtime/runtime_memory_metering_test.go b/runtime/runtime_memory_metering_test.go index 196e4c0d77..96c0d43b38 100644 --- a/runtime/runtime_memory_metering_test.go +++ b/runtime/runtime_memory_metering_test.go @@ -61,9 +61,9 @@ func TestInterpreterAddressLocationMetering(t *testing.T) { t.Parallel() script := ` - pub struct S {} + access(all) struct S {} - pub fun main() { + access(all) fun main() { let s = CompositeType("A.0000000000000001.S") } ` @@ -107,10 +107,10 @@ func TestInterpreterElaborationImportMetering(t *testing.T) { t.Parallel() contracts := [...][]byte{ - []byte(`pub contract C0 {}`), - []byte(`pub contract C1 {}`), - []byte(`pub contract C2 {}`), - []byte(`pub contract C3 {}`), + []byte(`access(all) contract C0 {}`), + []byte(`access(all) contract C1 {}`), + []byte(`access(all) contract C2 {}`), + []byte(`access(all) contract C3 {}`), } importExpressions := [len(contracts)]string{} @@ -125,7 +125,7 @@ func TestInterpreterElaborationImportMetering(t *testing.T) { t.Parallel() - script := "pub fun main() {}" + script := "access(all) fun main() {}" for j := 0; j <= imports; j++ { script = importExpressions[j] + script } @@ -210,7 +210,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(a: Int) { + access(all) fun main(a: Int) { } ` meter := newTestMemoryGauge() @@ -246,7 +246,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(a: Int) { + access(all) fun main(a: Int) { } ` meter := newTestMemoryGauge() @@ -289,7 +289,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(a: Int8) { + access(all) fun main(a: Int8) { } ` meter := newTestMemoryGauge() @@ -325,7 +325,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(a: Int16) { + access(all) fun main(a: Int16) { } ` meter := newTestMemoryGauge() @@ -361,7 +361,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(a: Int32) { + access(all) fun main(a: Int32) { } ` meter := newTestMemoryGauge() @@ -397,7 +397,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(a: Int64) { + access(all) fun main(a: Int64) { } ` meter := newTestMemoryGauge() @@ -433,7 +433,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(a: Int128) { + access(all) fun main(a: Int128) { } ` meter := newTestMemoryGauge() @@ -469,7 +469,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(a: Int256) { + access(all) fun main(a: Int256) { } ` meter := newTestMemoryGauge() @@ -505,7 +505,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(): Int { + access(all) fun main(): Int { let a = Int(2) return a } @@ -540,7 +540,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(): Int { + access(all) fun main(): Int { let a = Int(1) let b = a << 64 return b @@ -576,7 +576,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(): Int8 { + access(all) fun main(): Int8 { return 12 } ` @@ -607,7 +607,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(): Int16 { + access(all) fun main(): Int16 { return 12 } ` @@ -638,7 +638,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(): Int32 { + access(all) fun main(): Int32 { return 12 } ` @@ -669,7 +669,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(): Int64 { + access(all) fun main(): Int64 { return 12 } ` @@ -700,7 +700,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(): Int128 { + access(all) fun main(): Int128 { return 12 } ` @@ -731,7 +731,7 @@ func TestCadenceValueAndTypeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(): Int256 { + access(all) fun main(): Int256 { return 12 } ` @@ -766,7 +766,7 @@ func TestLogFunctionStringConversionMetering(t *testing.T) { testMetering := func(strLiteral string) (meteredAmount, actualLen uint64) { script := fmt.Sprintf(` - pub fun main() { + access(all) fun main() { let s = "%s" log(s) } @@ -1004,7 +1004,7 @@ func TestMemoryMeteringErrors(t *testing.T) { t.Parallel() script := []byte(` - pub fun main() {} + access(all) fun main() {} `) err := executeScript(script, memoryMeter{}) @@ -1015,7 +1015,7 @@ func TestMemoryMeteringErrors(t *testing.T) { t.Parallel() script := []byte(` - pub fun main(x: String) {} + access(all) fun main(x: String) {} `) err := executeScript( @@ -1032,7 +1032,7 @@ func TestMemoryMeteringErrors(t *testing.T) { t.Parallel() script := []byte(` - pub fun main() { + access(all) fun main() { 0b } `) @@ -1052,7 +1052,7 @@ func TestMemoryMeteringErrors(t *testing.T) { t.Parallel() script := []byte(` - pub fun main() { + access(all) fun main() { let x: [AnyStruct] = [] } `) @@ -1181,7 +1181,7 @@ func TestMeterEncoding(t *testing.T) { _, err := rt.ExecuteScript( Script{ Source: []byte(` - pub fun main() { + access(all) fun main() { let acc = getAuthAccount(0x02) var i = 0 var f = Foo() @@ -1192,8 +1192,8 @@ func TestMeterEncoding(t *testing.T) { } } - pub struct Foo { - priv var id: Int + access(all) struct Foo { + access(self) var id: Int init() { self.id = 123456789 } diff --git a/runtime/runtime_test.go b/runtime/runtime_test.go index 493ecb55de..c5ebb4b6ca 100644 --- a/runtime/runtime_test.go +++ b/runtime/runtime_test.go @@ -680,7 +680,7 @@ func TestRuntimeImport(t *testing.T) { runtime := newTestInterpreterRuntime() importedScript := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { return 42 } `) @@ -688,7 +688,7 @@ func TestRuntimeImport(t *testing.T) { script := []byte(` import "imported" - pub fun main(): Int { + access(all) fun main(): Int { let answer = answer() if answer != 42 { panic("?!") @@ -741,7 +741,7 @@ func TestRuntimeConcurrentImport(t *testing.T) { runtime := newTestInterpreterRuntime() importedScript := []byte(` - pub fun answer(): Int { + access(all) fun answer(): Int { return 42 } `) @@ -749,7 +749,7 @@ func TestRuntimeConcurrentImport(t *testing.T) { script := []byte(` import "imported" - pub fun main(): Int { + access(all) fun main(): Int { let answer = answer() if answer != 42 { panic("?!") @@ -1264,9 +1264,9 @@ func TestRuntimeTransactionWithArguments(t *testing.T) { Address: common.MustBytesToAddress([]byte{0x1}), Name: "C", }: []byte(` - pub contract C { - pub struct Foo { - pub var y: String + access(all) contract C { + access(all) struct Foo { + access(all) var y: String init() { self.y = "initial string" @@ -1312,9 +1312,9 @@ func TestRuntimeTransactionWithArguments(t *testing.T) { Address: common.MustBytesToAddress([]byte{0x1}), Name: "C", }: []byte(` - pub contract C { - pub struct Foo { - pub var y: String + access(all) contract C { + access(all) struct Foo { + access(all) var y: String init() { self.y = "initial string" @@ -1429,7 +1429,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "No arguments", script: ` - pub fun main() { + access(all) fun main() { log("t") } `, @@ -1439,7 +1439,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Single argument", script: ` - pub fun main(x: Int) { + access(all) fun main(x: Int) { log(x) } `, @@ -1451,7 +1451,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Multiple arguments", script: ` - pub fun main(x: Int, y: String) { + access(all) fun main(x: Int, y: String) { log(x) log(y) } @@ -1465,7 +1465,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Invalid bytes", script: ` - pub fun main(x: Int) { } + access(all) fun main(x: Int) { } `, args: [][]byte{ {1, 2, 3, 4}, // not valid JSON-CDC @@ -1481,7 +1481,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Type mismatch", script: ` - pub fun main(x: Int) { + access(all) fun main(x: Int) { log(x) } `, @@ -1500,7 +1500,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Address", script: ` - pub fun main(x: Address) { + access(all) fun main(x: Address) { log(x) } `, @@ -1519,7 +1519,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Array", script: ` - pub fun main(x: [Int]) { + access(all) fun main(x: [Int]) { log(x) } `, @@ -1539,7 +1539,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Constant-sized array, too many elements", script: ` - pub fun main(x: [Int; 2]) { + access(all) fun main(x: [Int; 2]) { log(x) } `, @@ -1566,7 +1566,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Constant-sized array, too few elements", script: ` - pub fun main(x: [Int; 2]) { + access(all) fun main(x: [Int; 2]) { log(x) } `, @@ -1591,7 +1591,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Dictionary", script: ` - pub fun main(x: {String:Int}) { + access(all) fun main(x: {String:Int}) { log(x["y"]) } `, @@ -1612,7 +1612,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Invalid dictionary", script: ` - pub fun main(x: {String:String}) { + access(all) fun main(x: {String:String}) { log(x["y"]) } `, @@ -1640,15 +1640,15 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Struct", script: ` - pub struct Foo { - pub var y: String + access(all) struct Foo { + access(all) var y: String init() { self.y = "initial string" } } - pub fun main(x: Foo) { + access(all) fun main(x: Foo) { log(x.y) } `, @@ -1673,15 +1673,15 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Struct in array", script: ` - pub struct Foo { - pub var y: String + access(all) struct Foo { + access(all) var y: String init() { self.y = "initial string" } } - pub fun main(f: [Foo]) { + access(all) fun main(f: [Foo]) { let x = f[0] log(x.y) } @@ -1709,7 +1709,7 @@ func TestRuntimeScriptArguments(t *testing.T) { { name: "Path subtype", script: ` - pub fun main(x: StoragePath) { + access(all) fun main(x: StoragePath) { log(x) } `, @@ -1782,7 +1782,7 @@ func TestRuntimeProgramWithNoTransaction(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main() {} + access(all) fun main() {} `) runtimeInterface := &testRuntimeInterface{} @@ -1902,13 +1902,13 @@ func TestRuntimeStorage(t *testing.T) { runtime := newTestInterpreterRuntime() imported := []byte(` - pub resource R {} + access(all) resource R {} - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } - pub struct S {} + access(all) struct S {} `) script := []byte(fmt.Sprintf(` @@ -1968,15 +1968,19 @@ func TestRuntimeStorageMultipleTransactionsResourceWithArray(t *testing.T) { runtime := newTestInterpreterRuntime() container := []byte(` - pub resource Container { - pub(set) var values: [Int] + access(all) resource Container { + access(all) var values: [Int] init() { self.values = [] } + + access(all) fun appendValue(_ v: Int) { + self.values.append(v) + } } - pub fun createContainer(): @Container { + access(all) fun createContainer(): @Container { return <-create Container() } `) @@ -2003,7 +2007,7 @@ func TestRuntimeStorageMultipleTransactionsResourceWithArray(t *testing.T) { .borrow<&Container>()! let length = ref.values.length - ref.values.append(1) + ref.appendValue(1) let length2 = ref.values.length } } @@ -2020,7 +2024,7 @@ func TestRuntimeStorageMultipleTransactionsResourceWithArray(t *testing.T) { .borrow<&Container>()! let length = ref.values.length - ref.values.append(2) + ref.appendValue(2) let length2 = ref.values.length } } @@ -2091,14 +2095,14 @@ func TestRuntimeStorageMultipleTransactionsResourceFunction(t *testing.T) { runtime := newTestInterpreterRuntime() deepThought := []byte(` - pub resource DeepThought { + access(all) resource DeepThought { - pub fun answer(): Int { + access(all) fun answer(): Int { return 42 } } - pub fun createDeepThought(): @DeepThought { + access(all) fun createDeepThought(): @DeepThought { return <-create DeepThought() } `) @@ -2183,14 +2187,14 @@ func TestRuntimeStorageMultipleTransactionsResourceField(t *testing.T) { runtime := newTestInterpreterRuntime() imported := []byte(` - pub resource SomeNumber { - pub(set) var n: Int + access(all) resource SomeNumber { + access(all) var n: Int init(_ n: Int) { self.n = n } } - pub fun createNumber(_ n: Int): @SomeNumber { + access(all) fun createNumber(_ n: Int): @SomeNumber { return <-create SomeNumber(n) } `) @@ -2276,16 +2280,16 @@ func TestRuntimeCompositeFunctionInvocationFromImportingProgram(t *testing.T) { imported := []byte(` // function must have arguments - pub fun x(x: Int) {} + access(all) fun x(x: Int) {} // invocation must be in composite - pub resource Y { - pub fun x() { + access(all) resource Y { + access(all) fun x() { x(x: 1) } } - pub fun createY(): @Y { + access(all) fun createY(): @Y { return <-create Y() } `) @@ -2359,13 +2363,13 @@ func TestRuntimeResourceContractUseThroughReference(t *testing.T) { runtime := newTestInterpreterRuntime() imported := []byte(` - pub resource R { - pub fun x() { + access(all) resource R { + access(all) fun x() { log("x!") } } - pub fun createR(): @R { + access(all) fun createR(): @R { return <- create R() } `) @@ -2447,13 +2451,13 @@ func TestRuntimeResourceContractUseThroughLink(t *testing.T) { runtime := newTestInterpreterRuntime() imported := []byte(` - pub resource R { - pub fun x() { + access(all) resource R { + access(all) fun x() { log("x!") } } - pub fun createR(): @R { + access(all) fun createR(): @R { return <- create R() } `) @@ -2538,21 +2542,21 @@ func TestRuntimeResourceContractWithInterface(t *testing.T) { runtime := newTestInterpreterRuntime() imported1 := []byte(` - pub resource interface RI { - pub fun x() + access(all) resource interface RI { + access(all) fun x() } `) imported2 := []byte(` import RI from "imported1" - pub resource R: RI { - pub fun x() { + access(all) resource R: RI { + access(all) fun x() { log("x!") } } - pub fun createR(): @R { + access(all) fun createR(): @R { return <- create R() } `) @@ -2643,7 +2647,7 @@ func TestRuntimeParseAndCheckProgram(t *testing.T) { t.Run("ValidProgram", func(t *testing.T) { runtime := newTestInterpreterRuntime() - script := []byte("pub fun test(): Int { return 42 }") + script := []byte("access(all) fun test(): Int { return 42 }") runtimeInterface := &testRuntimeInterface{} nextTransactionLocation := newTransactionLocationGenerator() @@ -2679,7 +2683,7 @@ func TestRuntimeParseAndCheckProgram(t *testing.T) { t.Run("InvalidSemantics", func(t *testing.T) { runtime := newTestInterpreterRuntime() - script := []byte(`pub let a: Int = "b"`) + script := []byte(`access(all) let a: Int = "b"`) runtimeInterface := &testRuntimeInterface{} nextTransactionLocation := newTransactionLocationGenerator() @@ -2746,7 +2750,7 @@ func TestRuntimeScriptReturnSpecial(t *testing.T) { test(t, testCase{ code: ` - pub fun main(): AnyStruct { + access(all) fun main(): AnyStruct { return fun (): Int { return 0 } @@ -2768,7 +2772,7 @@ func TestRuntimeScriptReturnSpecial(t *testing.T) { test(t, testCase{ code: ` - pub fun main(): AnyStruct { + access(all) fun main(): AnyStruct { return panic } `, @@ -2796,11 +2800,11 @@ func TestRuntimeScriptReturnSpecial(t *testing.T) { test(t, testCase{ code: ` - pub struct S { - pub fun f() {} + access(all) struct S { + access(all) fun f() {} } - pub fun main(): AnyStruct { + access(all) fun main(): AnyStruct { let s = S() return s.f } @@ -2821,7 +2825,7 @@ func TestRuntimeScriptReturnSpecial(t *testing.T) { test(t, testCase{ code: ` - pub fun main(): AnyStruct { + access(all) fun main(): AnyStruct { let a: Address = 0x1 return &a as &Address } @@ -2838,7 +2842,7 @@ func TestRuntimeScriptReturnSpecial(t *testing.T) { test(t, testCase{ code: ` - pub fun main(): AnyStruct { + access(all) fun main(): AnyStruct { let refs: [&AnyStruct] = [] refs.append(&refs as &AnyStruct) return refs @@ -2871,7 +2875,7 @@ func TestRuntimeScriptParameterTypeNotImportableError(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main(x: fun(): Int) { + access(all) fun main(x: fun(): Int) { return } `) @@ -2904,7 +2908,7 @@ func TestRuntimeSyntaxError(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main(): String { + access(all) fun main(): String { return "Hello World! } `) @@ -2937,15 +2941,19 @@ func TestRuntimeStorageChanges(t *testing.T) { runtime := newTestInterpreterRuntime() imported := []byte(` - pub resource X { - pub(set) var x: Int + access(all) resource X { + access(all) var x: Int init() { self.x = 0 } + + access(all) fun setX(_ x: Int) { + self.x = x + } } - pub fun createX(): @X { + access(all) fun createX(): @X { return <-create X() } `) @@ -2958,7 +2966,7 @@ func TestRuntimeStorageChanges(t *testing.T) { signer.save(<-createX(), to: /storage/x) let ref = signer.borrow<&X>(from: /storage/x)! - ref.x = 1 + ref.setX(1) } } `) @@ -3119,13 +3127,13 @@ func TestRuntimeAccountPublishAndAccess(t *testing.T) { runtime := newTestInterpreterRuntime() imported := []byte(` - pub resource R { - pub fun test(): Int { + access(all) resource R { + access(all) fun test(): Int { return 42 } } - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } `) @@ -3266,8 +3274,8 @@ func TestRuntimeContractAccount(t *testing.T) { addressValue := cadence.BytesToAddress([]byte{0xCA, 0xDE}) contract := []byte(` - pub contract Test { - pub let address: Address + access(all) contract Test { + access(all) let address: Address init() { // field 'account' can be used, as it is considered initialized @@ -3277,7 +3285,7 @@ func TestRuntimeContractAccount(t *testing.T) { // test that both functions are linked back into restored composite values, // and also injected fields are injected back into restored composite values // - pub fun test(): Address { + access(all) fun test(): Address { return self.account.address } } @@ -3286,7 +3294,7 @@ func TestRuntimeContractAccount(t *testing.T) { script1 := []byte(` import Test from 0xCADE - pub fun main(): Address { + access(all) fun main(): Address { return Test.address } `) @@ -3294,7 +3302,7 @@ func TestRuntimeContractAccount(t *testing.T) { script2 := []byte(` import Test from 0xCADE - pub fun main(): Address { + access(all) fun main(): Address { return Test.test() } `) @@ -3384,25 +3392,25 @@ func TestRuntimeInvokeContractFunction(t *testing.T) { } contract := []byte(` - pub contract Test { - pub fun hello() { + access(all) contract Test { + access(all) fun hello() { log("Hello World!") } - pub fun helloArg(_ arg: String) { + access(all) fun helloArg(_ arg: String) { log("Hello ".concat(arg)) } - pub fun helloMultiArg(arg1: String, arg2: Int, arg3: Address) { + access(all) fun helloMultiArg(arg1: String, arg2: Int, arg3: Address) { log("Hello ".concat(arg1).concat(" ").concat(arg2.toString()).concat(" from ").concat(arg3.toString())) } - pub fun helloReturn(_ arg: String): String { + access(all) fun helloReturn(_ arg: String): String { log("Hello return!") return arg } - pub fun helloAuthAcc(account: AuthAccount) { + access(all) fun helloAuthAcc(account: AuthAccount) { log("Hello ".concat(account.address.toString())) } - pub fun helloPublicAcc(account: PublicAccount) { - log("Hello pub ".concat(account.address.toString())) + access(all) fun helloPublicAcc(account: PublicAccount) { + log("Hello access(all) ".concat(account.address.toString())) } } `) @@ -3662,7 +3670,7 @@ func TestRuntimeInvokeContractFunction(t *testing.T) { ) require.NoError(t, err) - assert.Equal(t, `"Hello pub 0x0000000000000001"`, loggedMessage) + assert.Equal(t, `"Hello access(all) 0x0000000000000001"`, loggedMessage) }) } @@ -3677,11 +3685,11 @@ func TestRuntimeContractNestedResource(t *testing.T) { } contract := []byte(` - pub contract Test { - pub resource R { + access(all) contract Test { + access(all) resource R { // test that the hello function is linked back into the nested resource // after being loaded from storage - pub fun hello(): String { + access(all) fun hello(): String { return "Hello World!" } } @@ -3773,8 +3781,8 @@ func TestRuntimeStorageLoadedDestructionConcreteType(t *testing.T) { } contract := []byte(` - pub contract Test { - pub resource R { + access(all) contract Test { + access(all) resource R { // test that the destructor is linked back into the nested resource // after being loaded from storage destroy() { @@ -3867,8 +3875,8 @@ func TestRuntimeStorageLoadedDestructionAnyResource(t *testing.T) { } contract := []byte(` - pub contract Test { - pub resource R { + access(all) contract Test { + access(all) resource R { // test that the destructor is linked back into the nested resource // after being loaded from storage destroy() { @@ -3963,8 +3971,8 @@ func TestRuntimeStorageLoadedDestructionAfterRemoval(t *testing.T) { } contract := []byte(` - pub contract Test { - pub resource R { + access(all) contract Test { + access(all) resource R { // test that the destructor is linked back into the nested resource // after being loaded from storage destroy() { @@ -4077,10 +4085,10 @@ func TestRuntimeStorageLoadedDestructionAfterRemoval(t *testing.T) { } const basicFungibleTokenContract = ` -pub contract FungibleToken { +access(all) contract FungibleToken { - pub resource interface Provider { - pub fun withdraw(amount: Int): @Vault { + access(all) resource interface Provider { + access(all) fun withdraw(amount: Int): @Vault { pre { amount > 0: "Withdrawal amount must be positive" @@ -4092,8 +4100,8 @@ pub contract FungibleToken { } } - pub resource interface Receiver { - pub balance: Int + access(all) resource interface Receiver { + access(all) balance: Int init(balance: Int) { pre { @@ -4106,7 +4114,7 @@ pub contract FungibleToken { } } - pub fun deposit(from: @AnyResource{Receiver}) { + access(all) fun deposit(from: @AnyResource{Receiver}) { pre { from.balance > 0: "Deposit balance needs to be positive!" @@ -4118,21 +4126,21 @@ pub contract FungibleToken { } } - pub resource Vault: Provider, Receiver { + access(all) resource Vault: Provider, Receiver { - pub var balance: Int + access(all) var balance: Int init(balance: Int) { self.balance = balance } - pub fun withdraw(amount: Int): @Vault { + access(all) fun withdraw(amount: Int): @Vault { self.balance = self.balance - amount return <-create Vault(balance: amount) } // transfer combines withdraw and deposit into one function call - pub fun transfer(to: &AnyResource{Receiver}, amount: Int) { + access(all) fun transfer(to: &AnyResource{Receiver}, amount: Int) { pre { amount <= self.balance: "Insufficient funds" @@ -4144,22 +4152,22 @@ pub contract FungibleToken { to.deposit(from: <-self.withdraw(amount: amount)) } - pub fun deposit(from: @AnyResource{Receiver}) { + access(all) fun deposit(from: @AnyResource{Receiver}) { self.balance = self.balance + from.balance destroy from } - pub fun createEmptyVault(): @Vault { + access(all) fun createEmptyVault(): @Vault { return <-create Vault(balance: 0) } } - pub fun createEmptyVault(): @Vault { + access(all) fun createEmptyVault(): @Vault { return <-create Vault(balance: 0) } - pub resource VaultMinter { - pub fun mintTokens(amount: Int, recipient: &AnyResource{Receiver}) { + access(all) resource VaultMinter { + access(all) fun mintTokens(amount: Int, recipient: &AnyResource{Receiver}) { recipient.deposit(from: <-create Vault(balance: amount)) } } @@ -4453,11 +4461,11 @@ func TestRuntimeInvokeStoredInterfaceFunction(t *testing.T) { } contractInterfaceCode := ` - pub contract interface TestContractInterface { + access(all) contract interface TestContractInterface { - pub resource interface RInterface { + access(all) resource interface RInterface { - pub fun check(a: Int, b: Int) { + access(all) fun check(a: Int, b: Int) { pre { a > 1 } post { b > 1 } } @@ -4468,17 +4476,17 @@ func TestRuntimeInvokeStoredInterfaceFunction(t *testing.T) { contractCode := ` import TestContractInterface from 0x2 - pub contract TestContract: TestContractInterface { + access(all) contract TestContract: TestContractInterface { - pub resource R: TestContractInterface.RInterface { + access(all) resource R: TestContractInterface.RInterface { - pub fun check(a: Int, b: Int) { + access(all) fun check(a: Int, b: Int) { pre { a < 3 } post { b < 3 } } } - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } } @@ -4741,7 +4749,7 @@ func TestRuntimeTransactionTopLevelDeclarations(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun test() {} + access(all) fun test() {} transaction {} `) @@ -4770,7 +4778,7 @@ func TestRuntimeTransactionTopLevelDeclarations(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub resource R {} + access(all) resource R {} transaction {} `) @@ -4824,9 +4832,9 @@ func TestRuntimeStoreIntegerTypes(t *testing.T) { contract := []byte( fmt.Sprintf( ` - pub contract Test { + access(all) contract Test { - pub let n: %s + access(all) let n: %s init() { self.n = 42 @@ -4892,16 +4900,16 @@ func TestRuntimeResourceOwnerFieldUseComposite(t *testing.T) { } contract := []byte(` - pub contract Test { + access(all) contract Test { - pub resource R { + access(all) resource R { - pub fun logOwnerAddress() { + access(all) fun logOwnerAddress() { log(self.owner?.address) } } - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } } @@ -5086,16 +5094,16 @@ func TestRuntimeResourceOwnerFieldUseArray(t *testing.T) { } contract := []byte(` - pub contract Test { + access(all) contract Test { - pub resource R { + access(all) resource R { - pub fun logOwnerAddress() { + access(all) fun logOwnerAddress() { log(self.owner?.address) } } - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } } @@ -5259,16 +5267,16 @@ func TestRuntimeResourceOwnerFieldUseDictionary(t *testing.T) { } contract := []byte(` - pub contract Test { + access(all) contract Test { - pub resource R { + access(all) resource R { - pub fun logOwnerAddress() { + access(all) fun logOwnerAddress() { log(self.owner?.address) } } - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } } @@ -5430,7 +5438,7 @@ func TestRuntimeMetrics(t *testing.T) { imported1Location := common.StringLocation("imported1") importedScript1 := []byte(` - pub fun generate(): [Int] { + access(all) fun generate(): [Int] { return [1, 2, 3] } `) @@ -5438,7 +5446,7 @@ func TestRuntimeMetrics(t *testing.T) { imported2Location := common.StringLocation("imported2") importedScript2 := []byte(` - pub fun getPath(): StoragePath { + access(all) fun getPath(): StoragePath { return /storage/foo } `) @@ -5601,13 +5609,17 @@ func TestRuntimeContractWriteback(t *testing.T) { addressValue := cadence.BytesToAddress([]byte{0xCA, 0xDE}) contract := []byte(` - pub contract Test { + access(all) contract Test { - pub(set) var test: Int + access(all) var test: Int init() { self.test = 1 } + + access(all) fun setTest(_ test: Int) { + self.test = test + } } `) @@ -5630,7 +5642,7 @@ func TestRuntimeContractWriteback(t *testing.T) { transaction { prepare(signer: AuthAccount) { - Test.test = 2 + Test.setTest(2) } } `) @@ -5757,19 +5769,23 @@ func TestRuntimeStorageWriteback(t *testing.T) { addressValue := cadence.BytesToAddress([]byte{0xCA, 0xDE}) contract := []byte(` - pub contract Test { + access(all) contract Test { - pub resource R { + access(all) resource R { - pub(set) var test: Int + access(all) var test: Int init() { self.test = 1 } + + access(all) fun setTest(_ test: Int) { + self.test = test + } } - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } } @@ -5926,7 +5942,7 @@ func TestRuntimeStorageWriteback(t *testing.T) { prepare(signer: AuthAccount) { let r = signer.borrow<&Test.R>(from: /storage/r)! - r.test = 2 + r.setTest(2) } } `) @@ -6055,15 +6071,15 @@ func TestRuntimeDeployCodeCaching(t *testing.T) { t.Parallel() const helloWorldContract = ` - pub contract HelloWorld { + access(all) contract HelloWorld { - pub let greeting: String + access(all) let greeting: String init() { self.greeting = "Hello, World!" } - pub fun hello(): String { + access(all) fun hello(): String { return self.greeting } } @@ -6177,18 +6193,18 @@ func TestRuntimeUpdateCodeCaching(t *testing.T) { t.Parallel() const helloWorldContract1 = ` - pub contract HelloWorld { + access(all) contract HelloWorld { - pub fun hello(): String { + access(all) fun hello(): String { return "1" } } ` const helloWorldContract2 = ` - pub contract HelloWorld { + access(all) contract HelloWorld { - pub fun hello(): String { + access(all) fun hello(): String { return "2" } } @@ -6197,7 +6213,7 @@ func TestRuntimeUpdateCodeCaching(t *testing.T) { const callHelloScriptTemplate = ` import HelloWorld from 0x%s - pub fun main(): String { + access(all) fun main(): String { return HelloWorld.hello() } ` @@ -6399,15 +6415,15 @@ func TestRuntimeProgramsHitForToplevelPrograms(t *testing.T) { t.Parallel() const helloWorldContract = ` - pub contract HelloWorld { + access(all) contract HelloWorld { - pub let greeting: String + access(all) let greeting: String init() { self.greeting = "Hello, World!" } - pub fun hello(): String { + access(all) fun hello(): String { return self.greeting } } @@ -6575,24 +6591,24 @@ func TestRuntimeTransaction_ContractUpdate(t *testing.T) { runtime := newTestInterpreterRuntime() const contract1 = ` - pub contract Test { + access(all) contract Test { - pub resource R { + access(all) resource R { - pub let name: String + access(all) let name: String init(name: String) { self.name = name } - pub fun hello(): Int { + access(all) fun hello(): Int { return 1 } } - pub var rs: @{String: R} + access(all) var rs: @{String: R} - pub fun hello(): Int { + access(all) fun hello(): Int { return 1 } @@ -6604,24 +6620,24 @@ func TestRuntimeTransaction_ContractUpdate(t *testing.T) { ` const contract2 = ` - pub contract Test { + access(all) contract Test { - pub resource R { + access(all) resource R { - pub let name: String + access(all) let name: String init(name: String) { self.name = name } - pub fun hello(): Int { + access(all) fun hello(): Int { return 2 } } - pub var rs: @{String: R} + access(all) var rs: @{String: R} - pub fun hello(): Int { + access(all) fun hello(): Int { return 2 } @@ -6705,7 +6721,7 @@ func TestRuntimeTransaction_ContractUpdate(t *testing.T) { script1 := []byte(` import 0x42 - pub fun main() { + access(all) fun main() { // Check stored data assert(Test.rs.length == 1) @@ -6767,7 +6783,7 @@ func TestRuntimeTransaction_ContractUpdate(t *testing.T) { script2 := []byte(` import 0x42 - pub fun main() { + access(all) fun main() { // Existing data is still available and the same as before assert(Test.rs.length == 1) @@ -6800,7 +6816,7 @@ func TestRuntimeExecuteScriptArguments(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main(num: Int) {} + access(all) fun main(num: Int) {} `) type testCase struct { @@ -6910,7 +6926,7 @@ func TestRuntimePanics(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main() { + access(all) fun main() { [1][1] } `) @@ -6950,7 +6966,7 @@ func TestRuntimeGetCapability(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main(): Capability { + access(all) fun main(): Capability { let dict: {Int: AuthAccount} = {} let ref = &dict as &{Int: AnyStruct} ref[0] = getAccount(0x01) as AnyStruct @@ -6985,7 +7001,7 @@ func TestRuntimeGetCapability(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main(): Capability { + access(all) fun main(): Capability { let dict: {Int: AuthAccount} = {} let ref = &dict as &{Int: AnyStruct} ref[0] = getAccount(0x01) as AnyStruct @@ -7020,7 +7036,7 @@ func TestRuntimeGetCapability(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main(): Capability { + access(all) fun main(): Capability { let dict: {Int: PublicAccount} = {} let ref = &dict as &{Int: AnyStruct} ref[0] = getAccount(0x01) as AnyStruct @@ -7066,9 +7082,9 @@ func TestRuntimeStackOverflow(t *testing.T) { const contract = ` - pub contract Recurse { + access(all) contract Recurse { - priv fun recurse() { + access(self) fun recurse() { self.recurse() } @@ -7144,7 +7160,7 @@ func TestRuntimeInternalErrors(t *testing.T) { t.Parallel() script := []byte(` - pub fun main() { + access(all) fun main() { log("hello") } `) @@ -7179,7 +7195,7 @@ func TestRuntimeInternalErrors(t *testing.T) { t.Parallel() script := []byte(` - pub fun main() { + access(all) fun main() { log("hello") } `) @@ -7255,8 +7271,8 @@ func TestRuntimeInternalErrors(t *testing.T) { } contract := []byte(` - pub contract Test { - pub fun hello() { + access(all) contract Test { + access(all) fun hello() { log("Hello World!") } } @@ -7330,7 +7346,7 @@ func TestRuntimeInternalErrors(t *testing.T) { t.Parallel() - script := []byte("pub fun test() {}") + script := []byte("access(all) fun test() {}") runtime := newTestInterpreterRuntime() @@ -7425,7 +7441,7 @@ func TestRuntimeInternalErrors(t *testing.T) { t.Parallel() - script := []byte(`pub fun main() {}`) + script := []byte(`access(all) fun main() {}`) runtime := newTestInterpreterRuntime() @@ -7673,7 +7689,7 @@ func BenchmarkRuntimeScriptNoop(b *testing.B) { } script := Script{ - Source: []byte("pub fun main() {}"), + Source: []byte("access(all) fun main() {}"), } environment := NewScriptInterpreterEnvironment(Config{}) @@ -7709,7 +7725,7 @@ func TestRuntimeImportTestStdlib(t *testing.T) { Source: []byte(` import Test - pub fun main() { + access(all) fun main() { Test.assert(true) } `), @@ -7740,7 +7756,7 @@ func TestRuntimeGetCurrentBlockScript(t *testing.T) { _, err := rt.ExecuteScript( Script{ Source: []byte(` - pub fun main(): AnyStruct { + access(all) fun main(): AnyStruct { return getCurrentBlock() } `), @@ -7767,8 +7783,8 @@ func TestRuntimeTypeMismatchErrorMessage(t *testing.T) { address2 := common.MustBytesToAddress([]byte{0x2}) contract := []byte(` - pub contract Foo { - pub struct Bar {} + access(all) contract Foo { + access(all) struct Bar {} } `) @@ -7857,7 +7873,7 @@ func TestRuntimeTypeMismatchErrorMessage(t *testing.T) { script := []byte(` import Foo from 0x2 - pub fun main() { + access(all) fun main() { getAuthAccount(0x1).borrow<&Foo.Bar>(from: /storage/bar) } `) @@ -7884,7 +7900,7 @@ func TestRuntimeErrorExcerpts(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): Int { + access(all) fun main(): Int { // fill lines so the error occurs on lines 9 and 10 // // @@ -7935,7 +7951,7 @@ func TestRuntimeErrorExcerptsMultiline(t *testing.T) { rt := newTestInterpreterRuntime() script := []byte(` - pub fun main(): String { + access(all) fun main(): String { // fill lines so the error occurs on lines 9 and 10 // // @@ -7998,7 +8014,7 @@ func TestRuntimeAccountTypeEquality(t *testing.T) { script := []byte(` #allowAccountLinking - pub fun main(address: Address): AnyStruct { + access(all) fun main(address: Address): AnyStruct { let acct = getAuthAccount(address) let p = /private/tmp diff --git a/runtime/sharedstate_test.go b/runtime/sharedstate_test.go index e4df0d0c04..ea04588504 100644 --- a/runtime/sharedstate_test.go +++ b/runtime/sharedstate_test.go @@ -41,16 +41,16 @@ func TestRuntimeSharedState(t *testing.T) { signerAddress := common.MustBytesToAddress([]byte{0x1}) deploy1 := DeploymentTransaction("C1", []byte(` - pub contract C1 { - pub fun hello() { + access(all) contract C1 { + access(all) fun hello() { log("Hello from C1!") } } `)) deploy2 := DeploymentTransaction("C2", []byte(` - pub contract C2 { - pub fun hello() { + access(all) contract C2 { + access(all) fun hello() { log("Hello from C2!") } } diff --git a/runtime/stdlib/contracts/crypto.cdc b/runtime/stdlib/contracts/crypto.cdc index 1a7df12a09..6d7d9ca276 100644 --- a/runtime/stdlib/contracts/crypto.cdc +++ b/runtime/stdlib/contracts/crypto.cdc @@ -1,20 +1,20 @@ -pub contract Crypto { +access(all) contract Crypto { - pub fun hash(_ data: [UInt8], algorithm: HashAlgorithm): [UInt8] { + access(all) fun hash(_ data: [UInt8], algorithm: HashAlgorithm): [UInt8] { return algorithm.hash(data) } - pub fun hashWithTag(_ data: [UInt8], tag: String, algorithm: HashAlgorithm): [UInt8] { + access(all) fun hashWithTag(_ data: [UInt8], tag: String, algorithm: HashAlgorithm): [UInt8] { return algorithm.hashWithTag(data, tag: tag) } - pub struct KeyListEntry { - pub let keyIndex: Int - pub let publicKey: PublicKey - pub let hashAlgorithm: HashAlgorithm - pub let weight: UFix64 - pub let isRevoked: Bool + access(all) struct KeyListEntry { + access(all) let keyIndex: Int + access(all) let publicKey: PublicKey + access(all) let hashAlgorithm: HashAlgorithm + access(all) let weight: UFix64 + access(all) let isRevoked: Bool init( keyIndex: Int, @@ -31,16 +31,16 @@ pub contract Crypto { } } - pub struct KeyList { + access(all) struct KeyList { - priv let entries: [KeyListEntry] + access(self) let entries: [KeyListEntry] init() { self.entries = [] } /// Adds a new key with the given weight - pub fun add( + access(all) fun add( _ publicKey: PublicKey, hashAlgorithm: HashAlgorithm, weight: UFix64 @@ -60,7 +60,7 @@ pub contract Crypto { /// Returns the key at the given index, if it exists. /// Revoked keys are always returned, but they have `isRevoked` field set to true - pub fun get(keyIndex: Int): KeyListEntry? { + access(all) fun get(keyIndex: Int): KeyListEntry? { if keyIndex >= self.entries.length { return nil } @@ -69,7 +69,7 @@ pub contract Crypto { } /// Marks the key at the given index revoked, but does not delete it - pub fun revoke(keyIndex: Int) { + access(all) fun revoke(keyIndex: Int) { if keyIndex >= self.entries.length { return } @@ -84,7 +84,7 @@ pub contract Crypto { } /// Returns true if the given signatures are valid for the given signed data - pub fun verify( + access(all) fun verify( signatureSet: [KeyListSignature], signedData: [UInt8] ): Bool { @@ -139,17 +139,17 @@ pub contract Crypto { } } - pub struct KeyListSignature { - pub let keyIndex: Int - pub let signature: [UInt8] + access(all) struct KeyListSignature { + access(all) let keyIndex: Int + access(all) let signature: [UInt8] - pub init(keyIndex: Int, signature: [UInt8]) { + access(all) init(keyIndex: Int, signature: [UInt8]) { self.keyIndex = keyIndex self.signature = signature } } - priv let domainSeparationTagUser: String + access(self) let domainSeparationTagUser: String init() { self.domainSeparationTagUser = "FLOW-V0.0-user" diff --git a/runtime/stdlib/contracts/test.cdc b/runtime/stdlib/contracts/test.cdc index cfe6b15ca6..fcc98cf095 100644 --- a/runtime/stdlib/contracts/test.cdc +++ b/runtime/stdlib/contracts/test.cdc @@ -1,12 +1,12 @@ /// Test contract is the standard library that provides testing functionality in Cadence. /// -pub contract Test { +access(all) contract Test { /// Blockchain emulates a real network. /// - pub struct Blockchain { + access(all) struct Blockchain { - pub let backend: AnyStruct{BlockchainBackend} + access(all) let backend: AnyStruct{BlockchainBackend} init(backend: AnyStruct{BlockchainBackend}) { self.backend = backend @@ -15,7 +15,7 @@ pub contract Test { /// Executes a script and returns the script return value and the status. /// `returnValue` field of the result will be `nil` if the script failed. /// - pub fun executeScript(_ script: String, _ arguments: [AnyStruct]): ScriptResult { + access(all) fun executeScript(_ script: String, _ arguments: [AnyStruct]): ScriptResult { return self.backend.executeScript(script, arguments) } @@ -23,33 +23,33 @@ pub contract Test { /// The transaction is paid by the service account. /// The returned account can be used to sign and authorize transactions. /// - pub fun createAccount(): Account { + access(all) fun createAccount(): Account { return self.backend.createAccount() } /// Add a transaction to the current block. /// - pub fun addTransaction(_ tx: Transaction) { + access(all) fun addTransaction(_ tx: Transaction) { self.backend.addTransaction(tx) } /// Executes the next transaction in the block, if any. /// Returns the result of the transaction, or nil if no transaction was scheduled. /// - pub fun executeNextTransaction(): TransactionResult? { + access(all) fun executeNextTransaction(): TransactionResult? { return self.backend.executeNextTransaction() } /// Commit the current block. /// Committing will fail if there are un-executed transactions in the block. /// - pub fun commitBlock() { + access(all) fun commitBlock() { self.backend.commitBlock() } /// Executes a given transaction and commit the current block. /// - pub fun executeTransaction(_ tx: Transaction): TransactionResult { + access(all) fun executeTransaction(_ tx: Transaction): TransactionResult { self.addTransaction(tx) let txResult = self.executeNextTransaction()! self.commitBlock() @@ -58,7 +58,7 @@ pub contract Test { /// Executes a given set of transactions and commit the current block. /// - pub fun executeTransactions(_ transactions: [Transaction]): [TransactionResult] { + access(all) fun executeTransactions(_ transactions: [Transaction]): [TransactionResult] { for tx in transactions { self.addTransaction(tx) } @@ -75,7 +75,7 @@ pub contract Test { /// Deploys a given contract, and initilizes it with the arguments. /// - pub fun deployContract( + access(all) fun deployContract( name: String, code: String, account: Account, @@ -92,23 +92,23 @@ pub contract Test { /// Set the configuration to be used by the blockchain. /// Overrides any existing configuration. /// - pub fun useConfiguration(_ configuration: Configuration) { + access(all) fun useConfiguration(_ configuration: Configuration) { self.backend.useConfiguration(configuration) } } - pub struct Matcher { + access(all) struct Matcher { - pub let test: fun(AnyStruct): Bool + access(all) let test: fun(AnyStruct): Bool - pub init(test: fun(AnyStruct): Bool) { + access(all) init(test: fun(AnyStruct): Bool) { self.test = test } /// Combine this matcher with the given matcher. /// Returns a new matcher that succeeds if this and the given matcher succeed. /// - pub fun and(_ other: Matcher): Matcher { + access(all) fun and(_ other: Matcher): Matcher { return Matcher(test: fun (value: AnyStruct): Bool { return self.test(value) && other.test(value) }) @@ -118,7 +118,7 @@ pub contract Test { /// Returns a new matcher that succeeds if this or the given matcher succeed. /// If this matcher succeeds, then the other matcher would not be tested. /// - pub fun or(_ other: Matcher): Matcher { + access(all) fun or(_ other: Matcher): Matcher { return Matcher(test: fun (value: AnyStruct): Bool { return self.test(value) || other.test(value) }) @@ -127,25 +127,25 @@ pub contract Test { /// ResultStatus indicates status of a transaction or script execution. /// - pub enum ResultStatus: UInt8 { - pub case succeeded - pub case failed + access(all) enum ResultStatus: UInt8 { + access(all) case succeeded + access(all) case failed } /// Result is the interface to be implemented by the various execution /// operations, such as transactions and scripts. /// - pub struct interface Result { + access(all) struct interface Result { /// The resulted status of an executed operation. /// - pub let status: ResultStatus + access(all) let status: ResultStatus } /// The result of a transaction execution. /// - pub struct TransactionResult: Result { - pub let status: ResultStatus - pub let error: Error? + access(all) struct TransactionResult: Result { + access(all) let status: ResultStatus + access(all) let error: Error? init(status: ResultStatus, error: Error?) { self.status = status @@ -155,10 +155,10 @@ pub contract Test { /// The result of a script execution. /// - pub struct ScriptResult: Result { - pub let status: ResultStatus - pub let returnValue: AnyStruct? - pub let error: Error? + access(all) struct ScriptResult: Result { + access(all) let status: ResultStatus + access(all) let returnValue: AnyStruct? + access(all) let error: Error? init(status: ResultStatus, returnValue: AnyStruct?, error: Error?) { self.status = status @@ -169,8 +169,8 @@ pub contract Test { // Error is returned if something has gone wrong. // - pub struct Error { - pub let message: String + access(all) struct Error { + access(all) let message: String init(_ message: String) { self.message = message @@ -179,9 +179,9 @@ pub contract Test { /// Account represents info about the account created on the blockchain. /// - pub struct Account { - pub let address: Address - pub let publicKey: PublicKey + access(all) struct Account { + access(all) let address: Address + access(all) let publicKey: PublicKey init(address: Address, publicKey: PublicKey) { self.address = address @@ -192,8 +192,8 @@ pub contract Test { /// Configuration to be used by the blockchain. /// Can be used to set the address mappings. /// - pub struct Configuration { - pub let addresses: {String: Address} + access(all) struct Configuration { + access(all) let addresses: {String: Address} init(addresses: {String: Address}) { self.addresses = addresses @@ -202,11 +202,11 @@ pub contract Test { /// Transaction that can be submitted and executed on the blockchain. /// - pub struct Transaction { - pub let code: String - pub let authorizers: [Address] - pub let signers: [Account] - pub let arguments: [AnyStruct] + access(all) struct Transaction { + access(all) let code: String + access(all) let authorizers: [Address] + access(all) let signers: [Account] + access(all) let arguments: [AnyStruct] init(code: String, authorizers: [Address], signers: [Account], arguments: [AnyStruct]) { self.code = code @@ -218,36 +218,36 @@ pub contract Test { /// BlockchainBackend is the interface to be implemented by the backend providers. /// - pub struct interface BlockchainBackend { + access(all) struct interface BlockchainBackend { /// Executes a script and returns the script return value and the status. /// `returnValue` field of the result will be `nil` if the script failed. /// - pub fun executeScript(_ script: String, _ arguments: [AnyStruct]): ScriptResult + access(all) fun executeScript(_ script: String, _ arguments: [AnyStruct]): ScriptResult /// Creates a signer account by submitting an account creation transaction. /// The transaction is paid by the service account. /// The returned account can be used to sign and authorize transactions. /// - pub fun createAccount(): Account + access(all) fun createAccount(): Account /// Add a transaction to the current block. /// - pub fun addTransaction(_ tx: Transaction) + access(all) fun addTransaction(_ tx: Transaction) /// Executes the next transaction in the block, if any. /// Returns the result of the transaction, or nil if no transaction was scheduled. /// - pub fun executeNextTransaction(): TransactionResult? + access(all) fun executeNextTransaction(): TransactionResult? /// Commit the current block. /// Committing will fail if there are un-executed transactions in the block. /// - pub fun commitBlock() + access(all) fun commitBlock() /// Deploys a given contract, and initilizes it with the arguments. /// - pub fun deployContract( + access(all) fun deployContract( name: String, code: String, account: Account, @@ -257,12 +257,12 @@ pub contract Test { /// Set the configuration to be used by the blockchain. /// Overrides any existing configuration. /// - pub fun useConfiguration(_ configuration: Configuration) + access(all) fun useConfiguration(_ configuration: Configuration) } /// Returns a new matcher that negates the test of the given matcher. /// - pub fun not(_ matcher: Matcher): Matcher { + access(all) fun not(_ matcher: Matcher): Matcher { return Matcher(test: fun (value: AnyStruct): Bool { return !matcher.test(value) }) @@ -272,7 +272,7 @@ pub contract Test { /// a ScriptResult or TransactionResult and the ResultStatus is succeeded. /// Returns false in any other case. /// - pub fun beSucceeded(): Matcher { + access(all) fun beSucceeded(): Matcher { return Matcher(test: fun (value: AnyStruct): Bool { return (value as! {Result}).status == ResultStatus.succeeded }) @@ -282,7 +282,7 @@ pub contract Test { /// a ScriptResult or TransactionResult and the ResultStatus is failed. /// Returns false in any other case. /// - pub fun beFailed(): Matcher { + access(all) fun beFailed(): Matcher { return Matcher(test: fun (value: AnyStruct): Bool { return (value as! {Result}).status == ResultStatus.failed }) @@ -290,7 +290,7 @@ pub contract Test { /// Returns a new matcher that checks if the given test value is nil. /// - pub fun beNil(): Matcher { + access(all) fun beNil(): Matcher { return Matcher(test: fun (value: AnyStruct): Bool { return value == nil }) diff --git a/runtime/storage_test.go b/runtime/storage_test.go index c2ef3c93b5..e305380def 100644 --- a/runtime/storage_test.go +++ b/runtime/storage_test.go @@ -285,31 +285,31 @@ func TestRuntimePublicCapabilityBorrowTypeConfusion(t *testing.T) { const ducContract = ` import FungibleToken from 0xaad3e26e406987c2 - pub contract DapperUtilityCoin: FungibleToken { + access(all) contract DapperUtilityCoin: FungibleToken { // Total supply of DapperUtilityCoins in existence - pub var totalSupply: UFix64 + access(all) var totalSupply: UFix64 // Event that is emitted when the contract is created - pub event TokensInitialized(initialSupply: UFix64) + access(all) event TokensInitialized(initialSupply: UFix64) // Event that is emitted when tokens are withdrawn from a Vault - pub event TokensWithdrawn(amount: UFix64, from: Address?) + access(all) event TokensWithdrawn(amount: UFix64, from: Address?) // Event that is emitted when tokens are deposited to a Vault - pub event TokensDeposited(amount: UFix64, to: Address?) + access(all) event TokensDeposited(amount: UFix64, to: Address?) // Event that is emitted when new tokens are minted - pub event TokensMinted(amount: UFix64) + access(all) event TokensMinted(amount: UFix64) // Event that is emitted when tokens are destroyed - pub event TokensBurned(amount: UFix64) + access(all) event TokensBurned(amount: UFix64) // Event that is emitted when a new minter resource is created - pub event MinterCreated(allowedAmount: UFix64) + access(all) event MinterCreated(allowedAmount: UFix64) // Event that is emitted when a new burner resource is created - pub event BurnerCreated() + access(all) event BurnerCreated() // Vault // @@ -323,10 +323,10 @@ func TestRuntimePublicCapabilityBorrowTypeConfusion(t *testing.T) { // out of thin air. A special Minter resource needs to be defined to mint // new tokens. // - pub resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { + access(all) resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { // holds the balance of a users tokens - pub var balance: UFix64 + access(all) var balance: UFix64 // initialize the balance at resource creation time init(balance: UFix64) { @@ -342,7 +342,7 @@ func TestRuntimePublicCapabilityBorrowTypeConfusion(t *testing.T) { // created Vault to the context that called so it can be deposited // elsewhere. // - pub fun withdraw(amount: UFix64): @FungibleToken.Vault { + access(all) fun withdraw(amount: UFix64): @FungibleToken.Vault { self.balance = self.balance - amount emit TokensWithdrawn(amount: amount, from: self.owner?.address) return <-create Vault(balance: amount) @@ -355,7 +355,7 @@ func TestRuntimePublicCapabilityBorrowTypeConfusion(t *testing.T) { // It is allowed to destroy the sent Vault because the Vault // was a temporary holder of the tokens. The Vault's balance has // been consumed and therefore can be destroyed. - pub fun deposit(from: @FungibleToken.Vault) { + access(all) fun deposit(from: @FungibleToken.Vault) { let vault <- from as! @DapperUtilityCoin.Vault self.balance = self.balance + vault.balance emit TokensDeposited(amount: vault.balance, to: self.owner?.address) @@ -375,16 +375,16 @@ func TestRuntimePublicCapabilityBorrowTypeConfusion(t *testing.T) { // and store the returned Vault in their storage in order to allow their // account to be able to receive deposits of this token type. // - pub fun createEmptyVault(): @FungibleToken.Vault { + access(all) fun createEmptyVault(): @FungibleToken.Vault { return <-create Vault(balance: 0.0) } - pub resource Administrator { + access(all) resource Administrator { // createNewMinter // // Function that creates and returns a new minter resource // - pub fun createNewMinter(allowedAmount: UFix64): @Minter { + access(all) fun createNewMinter(allowedAmount: UFix64): @Minter { emit MinterCreated(allowedAmount: allowedAmount) return <-create Minter(allowedAmount: allowedAmount) } @@ -393,7 +393,7 @@ func TestRuntimePublicCapabilityBorrowTypeConfusion(t *testing.T) { // // Function that creates and returns a new burner resource // - pub fun createNewBurner(): @Burner { + access(all) fun createNewBurner(): @Burner { emit BurnerCreated() return <-create Burner() } @@ -403,17 +403,17 @@ func TestRuntimePublicCapabilityBorrowTypeConfusion(t *testing.T) { // // Resource object that token admin accounts can hold to mint new tokens. // - pub resource Minter { + access(all) resource Minter { // the amount of tokens that the minter is allowed to mint - pub var allowedAmount: UFix64 + access(all) var allowedAmount: UFix64 // mintTokens // // Function that mints new tokens, adds them to the total supply, // and returns them to the calling context. // - pub fun mintTokens(amount: UFix64): @DapperUtilityCoin.Vault { + access(all) fun mintTokens(amount: UFix64): @DapperUtilityCoin.Vault { pre { amount > UFix64(0): "Amount minted must be greater than zero" amount <= self.allowedAmount: "Amount minted must be less than the allowed amount" @@ -433,7 +433,7 @@ func TestRuntimePublicCapabilityBorrowTypeConfusion(t *testing.T) { // // Resource object that token admin accounts can hold to burn tokens. // - pub resource Burner { + access(all) resource Burner { // burnTokens // @@ -442,7 +442,7 @@ func TestRuntimePublicCapabilityBorrowTypeConfusion(t *testing.T) { // Note: the burned tokens are automatically subtracted from the // total supply in the Vault destructor. // - pub fun burnTokens(from: @FungibleToken.Vault) { + access(all) fun burnTokens(from: @FungibleToken.Vault) { let vault <- from as! @DapperUtilityCoin.Vault let amount = vault.balance destroy vault @@ -489,21 +489,25 @@ func TestRuntimePublicCapabilityBorrowTypeConfusion(t *testing.T) { const testContract = ` access(all) contract TestContract{ - pub struct fake{ - pub(set) var balance: UFix64 + access(all) struct fake{ + access(all) var balance: UFix64 init(){ self.balance = 0.0 } + + access(all) fun setBalance(_ balance: UFix64) { + self.balance = balance + } } - pub resource resourceConverter{ - pub fun convert(b: fake): AnyStruct { - b.balance = 100.0 + access(all) resource resourceConverter{ + access(all) fun convert(b: fake): AnyStruct { + b.setBalance(100.0) return b } } - pub resource resourceConverter2{ - pub fun convert(b: @AnyResource): AnyStruct { + access(all) resource resourceConverter2{ + access(all) fun convert(b: @AnyResource): AnyStruct { destroy b return "" } @@ -1022,33 +1026,33 @@ func TestRuntimeBatchMintAndTransfer(t *testing.T) { runtime := newTestInterpreterRuntime() const contract = ` - pub contract Test { + access(all) contract Test { - pub resource interface INFT {} + access(all) resource interface INFT {} - pub resource NFT: INFT {} + access(all) resource NFT: INFT {} - pub resource Collection { + access(all) resource Collection { - pub var ownedNFTs: @{UInt64: NFT} + access(all) var ownedNFTs: @{UInt64: NFT} init() { self.ownedNFTs <- {} } - pub fun withdraw(id: UInt64): @NFT { + access(all) fun withdraw(id: UInt64): @NFT { let token <- self.ownedNFTs.remove(key: id) ?? panic("Cannot withdraw: NFT does not exist in the collection") return <-token } - pub fun deposit(token: @NFT) { + access(all) fun deposit(token: @NFT) { let oldToken <- self.ownedNFTs[token.uuid] <- token destroy oldToken } - pub fun batchDeposit(collection: @Collection) { + access(all) fun batchDeposit(collection: @Collection) { let ids = collection.getIDs() for id in ids { @@ -1058,7 +1062,7 @@ func TestRuntimeBatchMintAndTransfer(t *testing.T) { destroy collection } - pub fun batchWithdraw(ids: [UInt64]): @Collection { + access(all) fun batchWithdraw(ids: [UInt64]): @Collection { let collection <- create Collection() for id in ids { @@ -1068,7 +1072,7 @@ func TestRuntimeBatchMintAndTransfer(t *testing.T) { return <-collection } - pub fun getIDs(): [UInt64] { + access(all) fun getIDs(): [UInt64] { return self.ownedNFTs.keys } @@ -1088,15 +1092,15 @@ func TestRuntimeBatchMintAndTransfer(t *testing.T) { ) } - pub fun mint(): @NFT { + access(all) fun mint(): @NFT { return <- create NFT() } - pub fun createEmptyCollection(): @Collection { + access(all) fun createEmptyCollection(): @Collection { return <- create Collection() } - pub fun batchMint(count: UInt64): @Collection { + access(all) fun batchMint(count: UInt64): @Collection { let collection <- create Collection() var i: UInt64 = 0 @@ -1468,13 +1472,13 @@ func TestRuntimeStorageReferenceCast(t *testing.T) { signerAddress := common.MustBytesToAddress([]byte{0x42}) deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { + access(all) contract Test { - pub resource interface RI {} + access(all) resource interface RI {} - pub resource R: RI {} + access(all) resource R: RI {} - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } } @@ -1757,11 +1761,11 @@ func TestRuntimeResourceOwnerChange(t *testing.T) { var signers []Address deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { + access(all) contract Test { - pub resource R {} + access(all) resource R {} - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } } @@ -1978,7 +1982,7 @@ func TestRuntimeStorageUsed(t *testing.T) { // that this should not clear temporary slabs script := []byte(` - pub fun main() { + access(all) fun main() { var addresses: [Address]= [ 0x2a3c4c2581cef731, 0x2a3c4c2581cef731, 0x2a3c4c2581cef731, 0x2a3c4c2581cef731, 0x2a3c4c2581cef731, 0x2a3c4c2581cef731, 0x2a3c4c2581cef731, 0x2a3c4c2581cef731, 0x2a3c4c2581cef731, 0x2a3c4c2581cef731, @@ -2091,40 +2095,40 @@ func TestRuntimeMissingSlab1173(t *testing.T) { t.Parallel() const contract = ` -pub contract Test { - pub enum Role: UInt8 { - pub case aaa - pub case bbb +access(all) contract Test { + access(all) enum Role: UInt8 { + access(all) case aaa + access(all) case bbb } - pub resource AAA { - pub fun callA(): String { + access(all) resource AAA { + access(all) fun callA(): String { return "AAA" } } - pub resource BBB { - pub fun callB(): String { + access(all) resource BBB { + access(all) fun callB(): String { return "BBB" } } - pub resource interface Receiver { - pub fun receive(asRole: Role, capability: Capability) + access(all) resource interface Receiver { + access(all) fun receive(asRole: Role, capability: Capability) } - pub resource Holder: Receiver { + access(all) resource Holder: Receiver { access(self) let roles: { Role: Capability } - pub fun receive(asRole: Role, capability: Capability) { + access(all) fun receive(asRole: Role, capability: Capability) { self.roles[asRole] = capability } - pub fun borrowA(): &AAA { + access(all) fun borrowA(): &AAA { let role = self.roles[Role.aaa]! return role.borrow<&AAA>()! } - pub fun borrowB(): &BBB { + access(all) fun borrowB(): &BBB { let role = self.roles[Role.bbb]! return role.borrow<&BBB>()! } @@ -2136,11 +2140,11 @@ pub contract Test { access(self) let capabilities: { Role: Capability } - pub fun createHolder(): @Holder { + access(all) fun createHolder(): @Holder { return <- create Holder() } - pub fun attach(asRole: Role, receiver: &AnyResource{Receiver}) { + access(all) fun attach(asRole: Role, receiver: &AnyResource{Receiver}) { // TODO: Now verify that the owner is valid. let capability = self.capabilities[asRole]! @@ -2251,10 +2255,10 @@ func TestRuntimeReferenceOwnerAccess(t *testing.T) { t.Parallel() const contract = ` - pub contract TestContract { - pub resource TestResource {} + access(all) contract TestContract { + access(all) resource TestResource {} - pub fun makeTestResource(): @TestResource { + access(all) fun makeTestResource(): @TestResource { return <- create TestResource() } } @@ -2394,10 +2398,10 @@ func TestRuntimeReferenceOwnerAccess(t *testing.T) { t.Parallel() const contract = ` - pub contract TestContract { - pub resource TestResource {} + access(all) contract TestContract { + access(all) resource TestResource {} - pub fun makeTestResource(): @TestResource { + access(all) fun makeTestResource(): @TestResource { return <- create TestResource() } } @@ -2516,11 +2520,11 @@ func TestRuntimeReferenceOwnerAccess(t *testing.T) { t.Parallel() const contract = ` - pub contract TestContract { - pub resource TestNestedResource {} + access(all) contract TestContract { + access(all) resource TestNestedResource {} - pub resource TestNestingResource { - pub let nestedResources: @[TestNestedResource] + access(all) resource TestNestingResource { + access(all) let nestedResources: @[TestNestedResource] init () { self.nestedResources <- [<- create TestNestedResource()] @@ -2531,7 +2535,7 @@ func TestRuntimeReferenceOwnerAccess(t *testing.T) { } } - pub fun makeTestNestingResource(): @TestNestingResource { + access(all) fun makeTestNestingResource(): @TestNestingResource { return <- create TestNestingResource() } } @@ -2656,10 +2660,10 @@ func TestRuntimeReferenceOwnerAccess(t *testing.T) { t.Parallel() const contract = ` - pub contract TestContract { - pub resource TestResource {} + access(all) contract TestContract { + access(all) resource TestResource {} - pub fun makeTestResource(): @TestResource { + access(all) fun makeTestResource(): @TestResource { return <- create TestResource() } } @@ -2778,10 +2782,10 @@ func TestRuntimeReferenceOwnerAccess(t *testing.T) { t.Parallel() const contract = ` - pub contract TestContract { - pub resource TestResource {} + access(all) contract TestContract { + access(all) resource TestResource {} - pub fun makeTestResource(): @TestResource { + access(all) fun makeTestResource(): @TestResource { return <- create TestResource() } } @@ -2989,16 +2993,16 @@ func TestRuntimeStorageEnumCase(t *testing.T) { Source: DeploymentTransaction( "C", []byte(` - pub contract C { + access(all) contract C { - pub enum E: UInt8 { - pub case A - pub case B + access(all) enum E: UInt8 { + access(all) case A + access(all) case B } - pub resource R { - pub let id: UInt64 - pub let e: E + access(all) resource R { + access(all) let id: UInt64 + access(all) let e: E init(id: UInt64, e: E) { self.id = id @@ -3006,22 +3010,22 @@ func TestRuntimeStorageEnumCase(t *testing.T) { } } - pub fun createR(id: UInt64, e: E): @R { + access(all) fun createR(id: UInt64, e: E): @R { return <- create R(id: id, e: e) } - pub resource Collection { - pub var rs: @{UInt64: R} + access(all) resource Collection { + access(all) var rs: @{UInt64: R} init () { self.rs <- {} } - pub fun withdraw(id: UInt64): @R { + access(all) fun withdraw(id: UInt64): @R { return <- self.rs.remove(key: id)! } - pub fun deposit(_ r: @R) { + access(all) fun deposit(_ r: @R) { let counts: {E: UInt64} = {} log(r.e) @@ -3037,7 +3041,7 @@ func TestRuntimeStorageEnumCase(t *testing.T) { } } - pub fun createEmptyCollection(): @Collection { + access(all) fun createEmptyCollection(): @Collection { return <- create Collection() } } @@ -3156,13 +3160,13 @@ func TestRuntimeStorageInternalAccess(t *testing.T) { address := common.MustBytesToAddress([]byte{0x1}) deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { + access(all) contract Test { - pub resource interface RI {} + access(all) resource interface RI {} - pub resource R: RI {} + access(all) resource R: RI {} - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } } @@ -3303,8 +3307,8 @@ func TestRuntimeStorageIteration(t *testing.T) { contractIsBroken := false deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub struct Foo {} + access(all) contract Test { + access(all) struct Foo {} } `)) @@ -3325,7 +3329,7 @@ func TestRuntimeStorageIteration(t *testing.T) { getAccountContractCode: func(location common.AddressLocation) (code []byte, err error) { if contractIsBroken { // Contract no longer has the type - return []byte(`pub contract Test {}`), nil + return []byte(`access(all) contract Test {}`), nil } code = accountCodes[location] @@ -3431,8 +3435,8 @@ func TestRuntimeStorageIteration(t *testing.T) { contractIsBroken := false deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub struct Foo {} + access(all) contract Test { + access(all) struct Foo {} } `)) @@ -3558,8 +3562,8 @@ func TestRuntimeStorageIteration(t *testing.T) { contractIsBroken := false deployTx := DeploymentTransaction("Test", []byte(` - pub contract Test { - pub struct Foo {} + access(all) contract Test { + access(all) struct Foo {} } `)) @@ -3577,8 +3581,8 @@ func TestRuntimeStorageIteration(t *testing.T) { getAccountContractCode: func(location common.AddressLocation) (code []byte, err error) { if contractIsBroken { // Contract has a semantic error. i.e: cannot find `Bar` - return []byte(`pub contract Test { - pub struct Foo: Bar {} + return []byte(`access(all) contract Test { + access(all) struct Foo: Bar {} }`), nil } diff --git a/runtime/type_test.go b/runtime/type_test.go index 3595790a9b..105f38b529 100644 --- a/runtime/type_test.go +++ b/runtime/type_test.go @@ -163,7 +163,7 @@ func TestRuntimeBlockFieldTypes(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main(): [UFix64] { + access(all) fun main(): [UFix64] { let block = getCurrentBlock() let id = block.id diff --git a/runtime/validation_test.go b/runtime/validation_test.go index 76e3b0b922..d9f10a73bb 100644 --- a/runtime/validation_test.go +++ b/runtime/validation_test.go @@ -95,7 +95,7 @@ func TestRuntimeArgumentImportMissingType(t *testing.T) { runtime := newTestInterpreterRuntime() script := []byte(` - pub fun main(value: AnyStruct) {} + access(all) fun main(value: AnyStruct) {} `) runtimeInterface := &testRuntimeInterface{ From 5485bb8be8291b54c6e3c68887957b69abd0f96d Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Tue, 6 Jun 2023 14:56:02 -0400 Subject: [PATCH 06/20] remove pub(set) from all tests --- runtime/interpreter/value_test.go | 2 +- runtime/sema/check_assignment.go | 2 +- runtime/tests/checker/composite_test.go | 2 +- runtime/tests/checker/entitlements_test.go | 8 +++--- .../tests/checker/external_mutation_test.go | 4 +-- runtime/tests/checker/function_test.go | 2 +- runtime/tests/checker/interface_test.go | 4 +-- runtime/tests/checker/purity_test.go | 26 ++++++++--------- runtime/tests/checker/reference_test.go | 6 ++-- runtime/tests/checker/return_test.go | 2 +- runtime/tests/interpreter/attachments_test.go | 8 +++--- runtime/tests/interpreter/function_test.go | 4 +-- runtime/tests/interpreter/interpreter_test.go | 4 +-- runtime/tests/interpreter/reference_test.go | 28 +++++++++---------- runtime/tests/interpreter/resources_test.go | 2 +- .../tests/parser/valid/parse_structure.fpl | 2 +- 16 files changed, 53 insertions(+), 53 deletions(-) diff --git a/runtime/interpreter/value_test.go b/runtime/interpreter/value_test.go index 256d3e73f0..d56cb792fb 100644 --- a/runtime/interpreter/value_test.go +++ b/runtime/interpreter/value_test.go @@ -1669,7 +1669,7 @@ func TestEphemeralReferenceTypeConformance(t *testing.T) { pub struct Foo { - pub(set) var bar: &Foo? + access(all) var bar: &Foo? init() { self.bar = nil diff --git a/runtime/sema/check_assignment.go b/runtime/sema/check_assignment.go index d64705691e..6dcf71e18e 100644 --- a/runtime/sema/check_assignment.go +++ b/runtime/sema/check_assignment.go @@ -123,7 +123,7 @@ func (checker *Checker) checkAssignment( // track the origin of a write target when it is a resource. Consider: // // pub resource R { -// pub(set) var x: Int +// access(all) var x: Int // init(x: Int) { // self.x = x // } diff --git a/runtime/tests/checker/composite_test.go b/runtime/tests/checker/composite_test.go index 691d508110..06d768dec5 100644 --- a/runtime/tests/checker/composite_test.go +++ b/runtime/tests/checker/composite_test.go @@ -107,7 +107,7 @@ func TestCheckComposite(t *testing.T) { fmt.Sprintf( ` %s Test %s { - pub(set) var foo: Int + access(all) var foo: Int init(foo: Int) { self.foo = foo diff --git a/runtime/tests/checker/entitlements_test.go b/runtime/tests/checker/entitlements_test.go index f1875f092a..6b263f8ad9 100644 --- a/runtime/tests/checker/entitlements_test.go +++ b/runtime/tests/checker/entitlements_test.go @@ -2038,12 +2038,12 @@ func TestCheckEntitlementInheritance(t *testing.T) { require.IsType(t, &sema.ConformanceError{}, errs[0]) }) - t.Run("pub(set) subtyping invalid", func(t *testing.T) { + t.Run("access(all) subtyping invalid", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` entitlement E struct interface I { - pub(set) var x: String + access(all) var x: String } struct S: I { access(E) var x: String @@ -2075,7 +2075,7 @@ func TestCheckEntitlementInheritance(t *testing.T) { require.IsType(t, &sema.ConformanceError{}, errs[0]) }) - t.Run("pub(set) supertyping invalid", func(t *testing.T) { + t.Run("access(all) supertyping invalid", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` entitlement E @@ -2083,7 +2083,7 @@ func TestCheckEntitlementInheritance(t *testing.T) { access(E) var x: String } struct S: I { - pub(set) var x: String + access(all) var x: String init() { self.x = "" } diff --git a/runtime/tests/checker/external_mutation_test.go b/runtime/tests/checker/external_mutation_test.go index 0ca74da510..6bd11af75b 100644 --- a/runtime/tests/checker/external_mutation_test.go +++ b/runtime/tests/checker/external_mutation_test.go @@ -664,7 +664,7 @@ func TestCheckPubSetAccessModifier(t *testing.T) { ` pub contract C { pub struct Foo { - pub(set) var x: {Int: Int} + access(all) var x: {Int: Int} init() { self.x = {3: 3} @@ -701,7 +701,7 @@ func TestCheckPubSetNestedAccessModifier(t *testing.T) { } pub struct Foo { - pub(set) var x: [Int] + access(all) var x: [Int] init() { self.x = [3] diff --git a/runtime/tests/checker/function_test.go b/runtime/tests/checker/function_test.go index 5a53d957c5..f800276add 100644 --- a/runtime/tests/checker/function_test.go +++ b/runtime/tests/checker/function_test.go @@ -144,7 +144,7 @@ func TestCheckInvalidFunctionAccess(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub(set) fun test() {} + access(all) fun test() {} `) expectInvalidAccessModifierError(t, err) diff --git a/runtime/tests/checker/interface_test.go b/runtime/tests/checker/interface_test.go index a3eb108b08..dc5c400325 100644 --- a/runtime/tests/checker/interface_test.go +++ b/runtime/tests/checker/interface_test.go @@ -1019,7 +1019,7 @@ func TestCheckInvalidInterfaceConformanceFieldMismatchAccessModifierMoreRestrict fmt.Sprintf( ` %[1]s interface Test { - pub(set) x: Int + access(all) x: Int } %[1]s TestImpl: Test { @@ -1085,7 +1085,7 @@ func TestCheckInterfaceConformanceFieldMorePermissiveAccessModifier(t *testing.T } %[1]s TestImpl: Test { - pub(set) var x: Int + access(all) var x: Int init(x: Int) { self.x = x diff --git a/runtime/tests/checker/purity_test.go b/runtime/tests/checker/purity_test.go index f22cf2f86a..3ebca784d9 100644 --- a/runtime/tests/checker/purity_test.go +++ b/runtime/tests/checker/purity_test.go @@ -561,7 +561,7 @@ func TestCheckPurityEnforcement(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` pub struct R { - pub(set) var x: Int + access(all) var x: Int init(x: Int) { self.x = x } @@ -586,7 +586,7 @@ func TestCheckPurityEnforcement(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` pub struct R { - pub(set) var x: Int + access(all) var x: Int init(x: Int) { self.x = x } @@ -605,7 +605,7 @@ func TestCheckPurityEnforcement(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` pub struct R { - pub(set) var x: Int + access(all) var x: Int init(x: Int) { self.x = x } @@ -712,7 +712,7 @@ func TestCheckPurityEnforcement(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` struct S { - pub(set) var x: Int + access(all) var x: Int init(x: Int) { self.x = x } @@ -736,7 +736,7 @@ func TestCheckPurityEnforcement(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` struct S { - pub(set) var x: Int + access(all) var x: Int init(_ x: Int) { self.x = x } @@ -762,7 +762,7 @@ func TestCheckPurityEnforcement(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` struct S { - pub(set) var x: Int + access(all) var x: Int init(x: Int) { self.x = x } @@ -789,7 +789,7 @@ func TestCheckResourceWritePurity(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` pub resource R { - pub(set) var x: Int + access(all) var x: Int init(x: Int) { self.x = x } @@ -833,7 +833,7 @@ func TestCheckResourceWritePurity(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` pub resource R { - pub(set) var x: Int + access(all) var x: Int init(x: Int) { self.x = x } @@ -862,7 +862,7 @@ func TestCheckResourceWritePurity(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` pub resource R { - pub(set) var x: Int + access(all) var x: Int view init(x: Int) { self.x = x } @@ -888,7 +888,7 @@ func TestCheckResourceWritePurity(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` pub resource R { - pub(set) var x: Int + access(all) var x: Int init(x: Int) { self.x = x } @@ -914,7 +914,7 @@ func TestCheckResourceWritePurity(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` resource R { - pub(set) var x: Int + access(all) var x: Int init(_ x: Int) { self.x = x } @@ -939,7 +939,7 @@ func TestCheckResourceWritePurity(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` resource R { - pub(set) var x: Int + access(all) var x: Int init(_ x: Int) { self.x = x } @@ -964,7 +964,7 @@ func TestCheckResourceWritePurity(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` pub resource R { - pub(set) var x: Int + access(all) var x: Int init(x: Int) { self.x = x } diff --git a/runtime/tests/checker/reference_test.go b/runtime/tests/checker/reference_test.go index 3482fbb368..bfa6b0c02f 100644 --- a/runtime/tests/checker/reference_test.go +++ b/runtime/tests/checker/reference_test.go @@ -1732,7 +1732,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { } pub resource R { - pub(set) var a: Int + access(all) var a: Int init() { self.a = 5 @@ -2374,7 +2374,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { } pub struct S { - pub(set) var b: &R? + access(all) var b: &R? init() { self.b = nil @@ -2411,7 +2411,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { } pub struct S { - pub(set) var b: &R? + access(all) var b: &R? init() { self.b = nil diff --git a/runtime/tests/checker/return_test.go b/runtime/tests/checker/return_test.go index 046f3948fd..1a2369369c 100644 --- a/runtime/tests/checker/return_test.go +++ b/runtime/tests/checker/return_test.go @@ -170,7 +170,7 @@ func TestCheckInvalidMissingReturnStatementStructFunction(t *testing.T) { _, err := ParseAndCheck(t, ` struct Test { - pub(set) var foo: Int + access(all) var foo: Int init(foo: Int) { self.foo = foo diff --git a/runtime/tests/interpreter/attachments_test.go b/runtime/tests/interpreter/attachments_test.go index bca3d76742..30de089a4c 100644 --- a/runtime/tests/interpreter/attachments_test.go +++ b/runtime/tests/interpreter/attachments_test.go @@ -1570,7 +1570,7 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { inter, _ := testAccount(t, address, true, ` resource R {} attachment A for R { - pub(set) var id: UInt8 + access(all) var id: UInt8 init() { self.id = 1 } @@ -1645,7 +1645,7 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { } } attachment A for R { - pub(set) var id: UInt8 + access(all) var id: UInt8 init() { self.id = 1 } @@ -1681,7 +1681,7 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { inter, _ := testAccount(t, address, true, ` pub resource R { - pub(set) var id: UInt8 + access(all) var id: UInt8 init() { self.id = 1 } @@ -1763,7 +1763,7 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { var ref: &A? = nil attachment A for R { - pub(set) var id: UInt8 + access(all) var id: UInt8 init() { self.id = 1 } diff --git a/runtime/tests/interpreter/function_test.go b/runtime/tests/interpreter/function_test.go index 29d10857fa..8ad7ee59f1 100644 --- a/runtime/tests/interpreter/function_test.go +++ b/runtime/tests/interpreter/function_test.go @@ -177,7 +177,7 @@ func TestInterpretResultVariable(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, ` pub resource R { - pub(set) var id: UInt8 + access(all) var id: UInt8 init() { self.id = 1 } @@ -235,7 +235,7 @@ func TestInterpretResultVariable(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, ` pub resource R { - pub(set) var id: UInt8 + access(all) var id: UInt8 init() { self.id = 1 } diff --git a/runtime/tests/interpreter/interpreter_test.go b/runtime/tests/interpreter/interpreter_test.go index bf9c12c0a9..bf0e5ac0f6 100644 --- a/runtime/tests/interpreter/interpreter_test.go +++ b/runtime/tests/interpreter/interpreter_test.go @@ -7590,7 +7590,7 @@ func TestInterpretReferenceUse(t *testing.T) { inter := parseCheckAndInterpret(t, ` pub resource R { - pub(set) var x: Int + access(all) var x: Int init() { self.x = 0 @@ -7646,7 +7646,7 @@ func TestInterpretReferenceUseAccess(t *testing.T) { inter := parseCheckAndInterpret(t, ` pub resource R { - pub(set) var x: Int + access(all) var x: Int init() { self.x = 0 diff --git a/runtime/tests/interpreter/reference_test.go b/runtime/tests/interpreter/reference_test.go index d1abb8dcba..30a4a89e98 100644 --- a/runtime/tests/interpreter/reference_test.go +++ b/runtime/tests/interpreter/reference_test.go @@ -564,7 +564,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { true, ` resource R { - pub(set) var id: Int + access(all) var id: Int init() { self.id = 1 @@ -602,7 +602,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { true, ` resource R { - pub(set) var id: Int + access(all) var id: Int init() { self.id = 1 @@ -634,7 +634,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { inter := parseCheckAndInterpret(t, ` resource R { - pub(set) var id: Int + access(all) var id: Int init() { self.id = 1 @@ -691,7 +691,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { t, ` resource R { - pub(set) var id: Int + access(all) var id: Int init() { self.id = 1 @@ -728,7 +728,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { inter := parseCheckAndInterpret(t, ` resource R { - pub(set) var id: Int + access(all) var id: Int init() { self.id = 1 @@ -800,7 +800,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { inter := parseCheckAndInterpret(t, ` resource R { - pub(set) var id: Int + access(all) var id: Int init() { self.id = 1 @@ -868,7 +868,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { true, ` resource R { - pub(set) var id: Int + access(all) var id: Int init() { self.id = 1 @@ -900,7 +900,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, ` resource R { - pub(set) var id: Int + access(all) var id: Int init() { self.id = 5 @@ -1024,7 +1024,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { } pub struct S { - pub(set) var b: &R? + access(all) var b: &R? init() { self.b = nil @@ -1065,7 +1065,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { } pub struct S { - pub(set) var b: &R? + access(all) var b: &R? init() { self.b = nil @@ -1086,7 +1086,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { t, ` resource R { - pub(set) var id: Int + access(all) var id: Int init() { self.id = 1 @@ -1121,7 +1121,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { t, ` resource R { - pub(set) var id: Int + access(all) var id: Int init() { self.id = 1 @@ -1173,7 +1173,7 @@ func TestInterpretResourceReferenceInvalidationOnDestroy(t *testing.T) { true, ` resource R { - pub(set) var id: Int + access(all) var id: Int init() { self.id = 1 @@ -1224,7 +1224,7 @@ func TestInterpretResourceReferenceInvalidationOnDestroy(t *testing.T) { } pub struct S { - pub(set) var b: &R? + access(all) var b: &R? init() { self.b = nil diff --git a/runtime/tests/interpreter/resources_test.go b/runtime/tests/interpreter/resources_test.go index b585d4d94a..3fb54e4c21 100644 --- a/runtime/tests/interpreter/resources_test.go +++ b/runtime/tests/interpreter/resources_test.go @@ -400,7 +400,7 @@ func TestInterpretImplicitResourceRemovalFromContainer(t *testing.T) { } resource R1 { - pub(set) var r2s: @{Int: R2} + access(all) var r2s: @{Int: R2} init() { self.r2s <- {} diff --git a/semantics/tests/parser/valid/parse_structure.fpl b/semantics/tests/parser/valid/parse_structure.fpl index 05d305e575..178c13d54d 100644 --- a/semantics/tests/parser/valid/parse_structure.fpl +++ b/semantics/tests/parser/valid/parse_structure.fpl @@ -1,5 +1,5 @@ struct Test { - pub(set) var foo: Int + access(all) var foo: Int init(foo: Int) { self.foo = foo From 669b0db4d69d538b25f9d24b98daa0b3cb291722 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Tue, 6 Jun 2023 15:25:30 -0400 Subject: [PATCH 07/20] update checker tests --- runtime/sema/authaccount.cdc | 84 ++-- runtime/sema/block.cdc | 10 +- runtime/sema/character.cdc | 4 +- runtime/sema/check_assignment.go | 2 +- runtime/sema/check_composite_declaration.go | 4 +- runtime/sema/checker.go | 4 +- runtime/sema/deployedcontract.cdc | 14 +- runtime/sema/deployedcontract.gen.go | 4 +- runtime/sema/errors.go | 2 +- runtime/sema/gen/testdata/comparable.cdc | 2 +- runtime/sema/gen/testdata/docstrings.cdc | 14 +- runtime/sema/gen/testdata/equatable.cdc | 2 +- runtime/sema/gen/testdata/exportable.cdc | 2 +- runtime/sema/gen/testdata/fields.cdc | 2 +- runtime/sema/gen/testdata/functions.cdc | 18 +- runtime/sema/gen/testdata/importable.cdc | 2 +- runtime/sema/gen/testdata/simple-resource.cdc | 2 +- runtime/sema/gen/testdata/simple-struct.cdc | 2 +- runtime/sema/gen/testdata/storable.cdc | 2 +- runtime/sema/publicaccount.cdc | 40 +- runtime/sema/type_test.go | 14 +- runtime/tests/checker/access_test.go | 116 +++--- runtime/tests/checker/assert_test.go | 4 +- runtime/tests/checker/attachments_test.go | 364 +++++++++--------- runtime/tests/checker/casting_test.go | 2 +- runtime/tests/checker/composite_test.go | 4 +- runtime/tests/checker/conformance_test.go | 96 ++--- runtime/tests/checker/entitlements_test.go | 68 ++-- runtime/tests/checker/entrypoint_test.go | 16 +- runtime/tests/checker/enum_test.go | 6 +- runtime/tests/checker/errors_test.go | 4 +- runtime/tests/checker/events_test.go | 4 +- .../tests/checker/external_mutation_test.go | 177 +++------ runtime/tests/checker/function_test.go | 25 +- runtime/tests/checker/import_test.go | 48 +-- runtime/tests/checker/interface_test.go | 14 +- runtime/tests/checker/invocation_test.go | 2 +- runtime/tests/checker/never_test.go | 14 +- runtime/tests/checker/nft_test.go | 192 ++++----- runtime/tests/checker/nil_coalescing_test.go | 4 +- .../tests/checker/predeclaredvalues_test.go | 2 +- runtime/tests/checker/purity_test.go | 178 +++++---- runtime/tests/checker/reference_test.go | 270 ++++++------- runtime/tests/checker/resources_test.go | 16 +- runtime/tests/checker/return_test.go | 2 +- runtime/tests/checker/type_inference_test.go | 58 +-- 46 files changed, 923 insertions(+), 993 deletions(-) diff --git a/runtime/sema/authaccount.cdc b/runtime/sema/authaccount.cdc index 3b2ca673ad..6879b16101 100644 --- a/runtime/sema/authaccount.cdc +++ b/runtime/sema/authaccount.cdc @@ -1,38 +1,38 @@ -pub struct AuthAccount { +access(all) struct AuthAccount { /// The address of the account. - pub let address: Address + access(all) let address: Address /// The FLOW balance of the default vault of this account. - pub let balance: UFix64 + access(all) let balance: UFix64 /// The FLOW balance of the default vault of this account that is available to be moved. - pub let availableBalance: UFix64 + access(all) let availableBalance: UFix64 /// The current amount of storage used by the account in bytes. - pub let storageUsed: UInt64 + access(all) let storageUsed: UInt64 /// The storage capacity of the account in bytes. - pub let storageCapacity: UInt64 + access(all) let storageCapacity: UInt64 /// The contracts deployed to the account. - pub let contracts: AuthAccount.Contracts + access(all) let contracts: AuthAccount.Contracts /// The keys assigned to the account. - pub let keys: AuthAccount.Keys + access(all) let keys: AuthAccount.Keys /// The inbox allows bootstrapping (sending and receiving) capabilities. - pub let inbox: AuthAccount.Inbox + access(all) let inbox: AuthAccount.Inbox /// All public paths of this account. - pub let publicPaths: [PublicPath] + access(all) let publicPaths: [PublicPath] /// All private paths of this account. - pub let privatePaths: [PrivatePath] + access(all) let privatePaths: [PrivatePath] /// All storage paths of this account. - pub let storagePaths: [StoragePath] + access(all) let storagePaths: [StoragePath] /// Saves the given object into the account's storage at the given path. /// @@ -41,7 +41,7 @@ pub struct AuthAccount { /// If there is already an object stored under the given path, the program aborts. /// /// The path must be a storage path, i.e., only the domain `storage` is allowed. - pub fun save(_ value: T, to: StoragePath) + access(all) fun save(_ value: T, to: StoragePath) /// Reads the type of an object from the account's storage which is stored under the given path, /// or nil if no object is stored under the given path. @@ -49,7 +49,7 @@ pub struct AuthAccount { /// If there is an object stored, the type of the object is returned without modifying the stored object. /// /// The path must be a storage path, i.e., only the domain `storage` is allowed. - pub view fun type(at path: StoragePath): Type? + access(all) view fun type(at path: StoragePath): Type? /// Loads an object from the account's storage which is stored under the given path, /// or nil if no object is stored under the given path. @@ -65,7 +65,7 @@ pub struct AuthAccount { /// The given type must not necessarily be exactly the same as the type of the loaded object. /// /// The path must be a storage path, i.e., only the domain `storage` is allowed. - pub fun load(from: StoragePath): T? + access(all) fun load(from: StoragePath): T? /// Returns a copy of a structure stored in account storage under the given path, /// without removing it from storage, @@ -80,7 +80,7 @@ pub struct AuthAccount { /// The given type must not necessarily be exactly the same as the type of the copied structure. /// /// The path must be a storage path, i.e., only the domain `storage` is allowed. - pub fun copy(from: StoragePath): T? + access(all) fun copy(from: StoragePath): T? /// Returns a reference to an object in storage without removing it from storage. /// @@ -92,7 +92,7 @@ pub struct AuthAccount { /// The given type must not necessarily be exactly the same as the type of the borrowed object. /// /// The path must be a storage path, i.e., only the domain `storage` is allowed - pub fun borrow(from: StoragePath): T? + access(all) fun borrow(from: StoragePath): T? /// Creates a capability at the given public or private path, /// which targets the given public, private, or storage path. @@ -112,22 +112,22 @@ pub struct AuthAccount { /// /// The target value might be stored after the link is created, /// and the target value might be moved out after the link has been created. - pub fun link(_ newCapabilityPath: CapabilityPath, target: Path): Capability? + access(all) fun link(_ newCapabilityPath: CapabilityPath, target: Path): Capability? /// Creates a capability at the given public or private path which targets this account. /// /// Returns nil if a link for the given capability path already exists, or the newly created capability if not. - pub fun linkAccount(_ newCapabilityPath: PrivatePath): Capability<&AuthAccount>? + access(all) fun linkAccount(_ newCapabilityPath: PrivatePath): Capability<&AuthAccount>? /// Returns the capability at the given private or public path. - pub fun getCapability(_ path: CapabilityPath): Capability + access(all) fun getCapability(_ path: CapabilityPath): Capability /// Returns the target path of the capability at the given public or private path, /// or nil if there exists no capability at the given path. - pub fun getLinkTarget(_ path: CapabilityPath): Path? + access(all) fun getLinkTarget(_ path: CapabilityPath): Path? /// Removes the capability at the given public or private path. - pub fun unlink(_ path: CapabilityPath) + access(all) fun unlink(_ path: CapabilityPath) /// Iterate over all the public paths of an account. /// passing each path and type in turn to the provided callback function. @@ -140,7 +140,7 @@ pub struct AuthAccount { /// /// The order of iteration, as well as the behavior of adding or removing objects from storage during iteration, /// is undefined. - pub fun forEachPublic(_ function: fun(PublicPath, Type): Bool) + access(all) fun forEachPublic(_ function: fun(PublicPath, Type): Bool) /// Iterate over all the private paths of an account. /// passing each path and type in turn to the provided callback function. @@ -153,7 +153,7 @@ pub struct AuthAccount { /// /// The order of iteration, as well as the behavior of adding or removing objects from storage during iteration, /// is undefined. - pub fun forEachPrivate(_ function: fun(PrivatePath, Type): Bool) + access(all) fun forEachPrivate(_ function: fun(PrivatePath, Type): Bool) /// Iterate over all the stored paths of an account. /// passing each path and type in turn to the provided callback function. @@ -166,12 +166,12 @@ pub struct AuthAccount { /// /// The order of iteration, as well as the behavior of adding or removing objects from storage during iteration, /// is undefined. - pub fun forEachStored(_ function: fun(StoragePath, Type): Bool) + access(all) fun forEachStored(_ function: fun(StoragePath, Type): Bool) - pub struct Contracts { + access(all) struct Contracts { /// The names of all contracts deployed in the account. - pub let names: [String] + access(all) let names: [String] /// Adds the given contract to the account. /// @@ -187,7 +187,7 @@ pub struct AuthAccount { /// or if the given name does not match the name of the contract/contract interface declaration in the code. /// /// Returns the deployed contract. - pub fun add( + access(all) fun add( name: String, code: [UInt8] ): DeployedContract @@ -208,33 +208,33 @@ pub struct AuthAccount { /// or if the given name does not match the name of the contract/contract interface declaration in the code. /// /// Returns the deployed contract for the updated contract. - pub fun update__experimental(name: String, code: [UInt8]): DeployedContract + access(all) fun update__experimental(name: String, code: [UInt8]): DeployedContract /// Returns the deployed contract for the contract/contract interface with the given name in the account, if any. /// /// Returns nil if no contract/contract interface with the given name exists in the account. - pub fun get(name: String): DeployedContract? + access(all) fun get(name: String): DeployedContract? /// Removes the contract/contract interface from the account which has the given name, if any. /// /// Returns the removed deployed contract, if any. /// /// Returns nil if no contract/contract interface with the given name exists in the account. - pub fun remove(name: String): DeployedContract? + access(all) fun remove(name: String): DeployedContract? /// Returns a reference of the given type to the contract with the given name in the account, if any. /// /// Returns nil if no contract with the given name exists in the account, /// or if the contract does not conform to the given type. - pub fun borrow(name: String): T? + access(all) fun borrow(name: String): T? } - pub struct Keys { + access(all) struct Keys { /// Adds a new key with the given hashing algorithm and a weight. /// /// Returns the added key. - pub fun add( + access(all) fun add( publicKey: PublicKey, hashAlgorithm: HashAlgorithm, weight: UFix64 @@ -243,36 +243,36 @@ pub struct AuthAccount { /// Returns the key at the given index, if it exists, or nil otherwise. /// /// Revoked keys are always returned, but they have `isRevoked` field set to true. - pub fun get(keyIndex: Int): AccountKey? + access(all) fun get(keyIndex: Int): AccountKey? /// Marks the key at the given index revoked, but does not delete it. /// /// Returns the revoked key if it exists, or nil otherwise. - pub fun revoke(keyIndex: Int): AccountKey? + access(all) fun revoke(keyIndex: Int): AccountKey? /// Iterate over all unrevoked keys in this account, /// passing each key in turn to the provided function. /// /// Iteration is stopped early if the function returns `false`. /// The order of iteration is undefined. - pub fun forEach(_ function: fun(AccountKey): Bool) + access(all) fun forEach(_ function: fun(AccountKey): Bool) /// The total number of unrevoked keys in this account. - pub let count: UInt64 + access(all) let count: UInt64 } - pub struct Inbox { + access(all) struct Inbox { /// Publishes a new Capability under the given name, /// to be claimed by the specified recipient. - pub fun publish(_ value: Capability, name: String, recipient: Address) + access(all) fun publish(_ value: Capability, name: String, recipient: Address) /// Unpublishes a Capability previously published by this account. /// /// Returns `nil` if no Capability is published under the given name. /// /// Errors if the Capability under that name does not match the provided type. - pub fun unpublish(_ name: String): Capability? + access(all) fun unpublish(_ name: String): Capability? /// Claims a Capability previously published by the specified provider. /// @@ -280,6 +280,6 @@ pub struct AuthAccount { /// or if this account is not its intended recipient. /// /// Errors if the Capability under that name does not match the provided type. - pub fun claim(_ name: String, provider: Address): Capability? + access(all) fun claim(_ name: String, provider: Address): Capability? } } diff --git a/runtime/sema/block.cdc b/runtime/sema/block.cdc index 0e1eb2232e..df8562d954 100644 --- a/runtime/sema/block.cdc +++ b/runtime/sema/block.cdc @@ -1,19 +1,19 @@ -pub struct Block { +access(all) struct Block { /// The height of the block. /// /// If the blockchain is viewed as a tree with the genesis block at the root, /// the height of a node is the number of edges between the node and the genesis block /// - pub let height: UInt64 + access(all) let height: UInt64 /// The view of the block. /// /// It is a detail of the consensus algorithm. It is a monotonically increasing integer and counts rounds in the consensus algorithm. /// Since not all rounds result in a finalized block, the view number is strictly greater than or equal to the block height /// - pub let view: UInt64 + access(all) let view: UInt64 /// The timestamp of the block. /// @@ -23,9 +23,9 @@ pub struct Block { // from the true time the block was published. /// Consider observing blocks' status changes off-chain yourself to get a more reliable value. /// - pub let timestamp: UFix64 + access(all) let timestamp: UFix64 /// The ID of the block. /// It is essentially the hash of the block - pub let id: [UInt8; 32] + access(all) let id: [UInt8; 32] } diff --git a/runtime/sema/character.cdc b/runtime/sema/character.cdc index 2f845b5d4c..86c9a68e04 100644 --- a/runtime/sema/character.cdc +++ b/runtime/sema/character.cdc @@ -1,6 +1,6 @@ -pub struct Character: Storable, Equatable, Comparable, Exportable, Importable { +access(all) struct Character: Storable, Equatable, Comparable, Exportable, Importable { /// Returns this character as a String - pub fun toString(): String + access(all) fun toString(): String } diff --git a/runtime/sema/check_assignment.go b/runtime/sema/check_assignment.go index 6dcf71e18e..8d278a9207 100644 --- a/runtime/sema/check_assignment.go +++ b/runtime/sema/check_assignment.go @@ -122,7 +122,7 @@ func (checker *Checker) checkAssignment( // to a resource; because resources are moved instead of copied, we cannot currently // track the origin of a write target when it is a resource. Consider: // -// pub resource R { +// access(all) resource R { // access(all) var x: Int // init(x: Int) { // self.x = x diff --git a/runtime/sema/check_composite_declaration.go b/runtime/sema/check_composite_declaration.go index 8f257ec09c..4c53ae1167 100644 --- a/runtime/sema/check_composite_declaration.go +++ b/runtime/sema/check_composite_declaration.go @@ -2381,9 +2381,9 @@ func (checker *Checker) declareBaseValue(baseType Type, attachmentType *Composit // ------------------------------- // entitlement E // entitlement F - // pub attachment A for R { + // access(all) attachment A for R { // require entitlement E - // pub fun foo() { ... } + // access(all) fun foo() { ... } // } // ------------------------------- // within the body of `foo`, the `base` value will be entitled to `E` but not `F`, because only `E` was required in the attachment's declaration diff --git a/runtime/sema/checker.go b/runtime/sema/checker.go index 76827effeb..cf44ec8043 100644 --- a/runtime/sema/checker.go +++ b/runtime/sema/checker.go @@ -2161,7 +2161,7 @@ func (checker *Checker) predeclaredMembers(containerType Type) []*Member { // All resources have two predeclared fields: - // `pub let owner: PublicAccount?`, + // `access(all) let owner: PublicAccount?`, // ignored in serialization addPredeclaredMember( @@ -2175,7 +2175,7 @@ func (checker *Checker) predeclaredMembers(containerType Type) []*Member { resourceOwnerFieldDocString, ) - // `pub let uuid: UInt64`, + // `access(all) let uuid: UInt64`, // included in serialization addPredeclaredMember( diff --git a/runtime/sema/deployedcontract.cdc b/runtime/sema/deployedcontract.cdc index ba9553c197..61f2195aa8 100644 --- a/runtime/sema/deployedcontract.cdc +++ b/runtime/sema/deployedcontract.cdc @@ -1,13 +1,13 @@ -pub struct DeployedContract { +access(all) struct DeployedContract { /// The address of the account where the contract is deployed at. - pub let address: Address + access(all) let address: Address /// The name of the contract. - pub let name: String + access(all) let name: String /// The code of the contract. - pub let code: [UInt8] + access(all) let code: [UInt8] /// Returns an array of `Type` objects representing all the public type declarations in this contract /// (e.g. structs, resources, enums). @@ -15,10 +15,10 @@ pub struct DeployedContract { /// For example, given a contract /// ``` /// contract Foo { - /// pub struct Bar {...} - /// pub resource Qux {...} + /// access(all) struct Bar {...} + /// access(all) resource Qux {...} /// } /// ``` /// then `.publicTypes()` will return an array equivalent to the expression `[Type(), Type()]` - pub fun publicTypes(): [Type] + access(all) fun publicTypes(): [Type] } diff --git a/runtime/sema/deployedcontract.gen.go b/runtime/sema/deployedcontract.gen.go index da738bfe70..792b47b566 100644 --- a/runtime/sema/deployedcontract.gen.go +++ b/runtime/sema/deployedcontract.gen.go @@ -62,8 +62,8 @@ Returns an array of ` + "`Type`" + ` objects representing all the public type de For example, given a contract ` + ` contract Foo { -pub struct Bar {...} -pub resource Qux {...} +access(all) struct Bar {...} +access(all) resource Qux {...} } ` + ` then ` + "`.publicTypes()`" + ` will return an array equivalent to the expression ` + "`[Type(), Type()]`" + ` diff --git a/runtime/sema/errors.go b/runtime/sema/errors.go index f55596d131..ea41caf86b 100644 --- a/runtime/sema/errors.go +++ b/runtime/sema/errors.go @@ -4393,7 +4393,7 @@ func (e *InvalidAttachmentEntitlementError) Error() string { func (e *InvalidAttachmentEntitlementError) SecondaryError() string { switch access := e.AttachmentAccessModifier.(type) { case PrimitiveAccess: - return "attachments declared with `pub` access do not support entitlements on their members" + return "attachments declared with `access(all)` access do not support entitlements on their members" case EntitlementMapAccess: return fmt.Sprintf("`%s` must appear in the output of the entitlement mapping `%s`", e.InvalidEntitlement.QualifiedIdentifier(), diff --git a/runtime/sema/gen/testdata/comparable.cdc b/runtime/sema/gen/testdata/comparable.cdc index e39c3796e5..4f8520c6c5 100644 --- a/runtime/sema/gen/testdata/comparable.cdc +++ b/runtime/sema/gen/testdata/comparable.cdc @@ -1 +1 @@ -pub struct Test: Comparable {} +access(all) struct Test: Comparable {} diff --git a/runtime/sema/gen/testdata/docstrings.cdc b/runtime/sema/gen/testdata/docstrings.cdc index 8bd8413a4c..19b07b556f 100644 --- a/runtime/sema/gen/testdata/docstrings.cdc +++ b/runtime/sema/gen/testdata/docstrings.cdc @@ -1,28 +1,28 @@ -pub struct Docstrings { +access(all) struct Docstrings { /// This is a 1-line docstring. - pub let owo: Int + access(all) let owo: Int /// This is a 2-line docstring. /// This is the second line. - pub let uwu: [Int] + access(all) let uwu: [Int] /// This is a 3-line docstring for a function. /// This is the second line. /// And the third line! - pub fun nwn(x: Int): String? + access(all) fun nwn(x: Int): String? /// This is a multiline docstring. /// /// There should be two newlines before this line! - pub let withBlanks: Int + access(all) let withBlanks: Int /// The function `isSmolBean` has docstrings with backticks. /// These should be handled accordingly. - pub fun isSmolBean(): Bool + access(all) fun isSmolBean(): Bool /// A function with a docstring. /// This docstring is `cool` because it has inline backticked expressions. /// Look, I did it `again`, wowie!! - pub fun runningOutOfIdeas(): UInt64? + access(all) fun runningOutOfIdeas(): UInt64? } \ No newline at end of file diff --git a/runtime/sema/gen/testdata/equatable.cdc b/runtime/sema/gen/testdata/equatable.cdc index 6d05ef4e17..9ce1d08b9f 100644 --- a/runtime/sema/gen/testdata/equatable.cdc +++ b/runtime/sema/gen/testdata/equatable.cdc @@ -1 +1 @@ -pub struct Test: Equatable {} +access(all) struct Test: Equatable {} diff --git a/runtime/sema/gen/testdata/exportable.cdc b/runtime/sema/gen/testdata/exportable.cdc index dd7d1c469c..1aa2feb4f3 100644 --- a/runtime/sema/gen/testdata/exportable.cdc +++ b/runtime/sema/gen/testdata/exportable.cdc @@ -1 +1 @@ -pub struct Test: Exportable {} +access(all) struct Test: Exportable {} diff --git a/runtime/sema/gen/testdata/fields.cdc b/runtime/sema/gen/testdata/fields.cdc index 5755eb6181..fe6b00ecb4 100644 --- a/runtime/sema/gen/testdata/fields.cdc +++ b/runtime/sema/gen/testdata/fields.cdc @@ -1,4 +1,4 @@ -pub struct Test { +access(all) struct Test { /// This is a test integer. let testInt: UInt64 diff --git a/runtime/sema/gen/testdata/functions.cdc b/runtime/sema/gen/testdata/functions.cdc index 376ad84682..053d827cb6 100644 --- a/runtime/sema/gen/testdata/functions.cdc +++ b/runtime/sema/gen/testdata/functions.cdc @@ -1,25 +1,25 @@ -pub struct Test { +access(all) struct Test { /// This is a test function. - pub fun nothing() {} + access(all) fun nothing() {} /// This is a test function with parameters. - pub fun params(a: Int, _ b: String) {} + access(all) fun params(a: Int, _ b: String) {} /// This is a test function with a return type. - pub fun returnBool(): Bool {} + access(all) fun returnBool(): Bool {} /// This is a test function with parameters and a return type. - pub fun paramsAndReturn(a: Int, _ b: String): Bool {} + access(all) fun paramsAndReturn(a: Int, _ b: String): Bool {} /// This is a test function with a type parameter. - pub fun typeParam() {} + access(all) fun typeParam() {} /// This is a test function with a type parameter and a type bound. - pub fun typeParamWithBound() {} + access(all) fun typeParamWithBound() {} /// This is a test function with a type parameter and a parameter using it. - pub fun typeParamWithBoundAndParam(t: T) {} + access(all) fun typeParamWithBoundAndParam(t: T) {} /// This is a function with 'view' modifier - pub view fun viewFunction() {} + access(all) view fun viewFunction() {} } diff --git a/runtime/sema/gen/testdata/importable.cdc b/runtime/sema/gen/testdata/importable.cdc index 4d5c664000..35a4167b29 100644 --- a/runtime/sema/gen/testdata/importable.cdc +++ b/runtime/sema/gen/testdata/importable.cdc @@ -1 +1 @@ -pub struct Test: Importable {} +access(all) struct Test: Importable {} diff --git a/runtime/sema/gen/testdata/simple-resource.cdc b/runtime/sema/gen/testdata/simple-resource.cdc index 422a201e5b..7f4da96636 100644 --- a/runtime/sema/gen/testdata/simple-resource.cdc +++ b/runtime/sema/gen/testdata/simple-resource.cdc @@ -1 +1 @@ -pub resource Test {} +access(all) resource Test {} diff --git a/runtime/sema/gen/testdata/simple-struct.cdc b/runtime/sema/gen/testdata/simple-struct.cdc index fe79d9f91a..db81f193e4 100644 --- a/runtime/sema/gen/testdata/simple-struct.cdc +++ b/runtime/sema/gen/testdata/simple-struct.cdc @@ -1 +1 @@ -pub struct Test {} +access(all) struct Test {} diff --git a/runtime/sema/gen/testdata/storable.cdc b/runtime/sema/gen/testdata/storable.cdc index 0c7fff3d84..9c324203bb 100644 --- a/runtime/sema/gen/testdata/storable.cdc +++ b/runtime/sema/gen/testdata/storable.cdc @@ -1 +1 @@ -pub struct Test: Storable {} +access(all) struct Test: Storable {} diff --git a/runtime/sema/publicaccount.cdc b/runtime/sema/publicaccount.cdc index e69f186589..f906fcca99 100644 --- a/runtime/sema/publicaccount.cdc +++ b/runtime/sema/publicaccount.cdc @@ -1,36 +1,36 @@ -pub struct PublicAccount { +access(all) struct PublicAccount { /// The address of the account. - pub let address: Address + access(all) let address: Address /// The FLOW balance of the default vault of this account. - pub let balance: UFix64 + access(all) let balance: UFix64 /// The FLOW balance of the default vault of this account that is available to be moved. - pub let availableBalance: UFix64 + access(all) let availableBalance: UFix64 /// The current amount of storage used by the account in bytes. - pub let storageUsed: UInt64 + access(all) let storageUsed: UInt64 /// The storage capacity of the account in bytes. - pub let storageCapacity: UInt64 + access(all) let storageCapacity: UInt64 /// The contracts deployed to the account. - pub let contracts: PublicAccount.Contracts + access(all) let contracts: PublicAccount.Contracts /// The keys assigned to the account. - pub let keys: PublicAccount.Keys + access(all) let keys: PublicAccount.Keys /// All public paths of this account. - pub let publicPaths: [PublicPath] + access(all) let publicPaths: [PublicPath] /// Returns the capability at the given public path. - pub fun getCapability(_ path: PublicPath): Capability + access(all) fun getCapability(_ path: PublicPath): Capability /// Returns the target path of the capability at the given public or private path, /// or nil if there exists no capability at the given path. - pub fun getLinkTarget(_ path: CapabilityPath): Path? + access(all) fun getLinkTarget(_ path: CapabilityPath): Path? /// Iterate over all the public paths of an account. /// passing each path and type in turn to the provided callback function. @@ -43,40 +43,40 @@ pub struct PublicAccount { /// /// The order of iteration, as well as the behavior of adding or removing objects from storage during iteration, /// is undefined. - pub fun forEachPublic(_ function: fun(PublicPath, Type): Bool) + access(all) fun forEachPublic(_ function: fun(PublicPath, Type): Bool) - pub struct Contracts { + access(all) struct Contracts { /// The names of all contracts deployed in the account. - pub let names: [String] + access(all) let names: [String] /// Returns the deployed contract for the contract/contract interface with the given name in the account, if any. /// /// Returns nil if no contract/contract interface with the given name exists in the account. - pub fun get(name: String): DeployedContract? + access(all) fun get(name: String): DeployedContract? /// Returns a reference of the given type to the contract with the given name in the account, if any. /// /// Returns nil if no contract with the given name exists in the account, /// or if the contract does not conform to the given type. - pub fun borrow(name: String): T? + access(all) fun borrow(name: String): T? } - pub struct Keys { + access(all) struct Keys { /// Returns the key at the given index, if it exists, or nil otherwise. /// /// Revoked keys are always returned, but they have `isRevoked` field set to true. - pub fun get(keyIndex: Int): AccountKey? + access(all) fun get(keyIndex: Int): AccountKey? /// Iterate over all unrevoked keys in this account, /// passing each key in turn to the provided function. /// /// Iteration is stopped early if the function returns `false`. /// The order of iteration is undefined. - pub fun forEach(_ function: fun(AccountKey): Bool) + access(all) fun forEach(_ function: fun(AccountKey): Bool) /// The total number of unrevoked keys in this account. - pub let count: UInt64 + access(all) let count: UInt64 } } diff --git a/runtime/sema/type_test.go b/runtime/sema/type_test.go index 9f094c2764..b832fe6dc5 100644 --- a/runtime/sema/type_test.go +++ b/runtime/sema/type_test.go @@ -651,19 +651,19 @@ func TestIdentifierCacheUpdate(t *testing.T) { t.Parallel() code := ` - pub contract interface Test { + access(all) contract interface Test { - pub struct interface NestedInterface { - pub fun test(): Bool + access(all) struct interface NestedInterface { + access(all) fun test(): Bool } - pub struct Nested: NestedInterface {} + access(all) struct Nested: NestedInterface {} } - pub contract TestImpl { + access(all) contract TestImpl { - pub struct Nested { - pub fun test(): Bool { + access(all) struct Nested { + access(all) fun test(): Bool { return true } } diff --git a/runtime/tests/checker/access_test.go b/runtime/tests/checker/access_test.go index 2b44d6dfc6..ab4ed38ef8 100644 --- a/runtime/tests/checker/access_test.go +++ b/runtime/tests/checker/access_test.go @@ -188,7 +188,7 @@ func TestCheckAccessModifierInterfaceFunctionDeclaration(t *testing.T) { _, err := ParseAndCheckWithOptions(t, fmt.Sprintf( ` - pub %[1]s interface Test { + access(all) %[1]s interface Test { %[2]s fun test() } `, @@ -687,15 +687,15 @@ func TestCheckAccessCompositeFunction(t *testing.T) { _, err := ParseAndCheckWithOptions(t, fmt.Sprintf( ` - pub %[1]s Test { + access(all) %[1]s Test { %[2]s fun test() {} - pub fun test2() { + access(all) fun test2() { self.test() } } - pub fun test() { + access(all) fun test() { %[3]s %[4]s.test() %[5]s @@ -794,19 +794,19 @@ func TestCheckAccessInterfaceFunction(t *testing.T) { _, err := ParseAndCheckWithOptions(t, fmt.Sprintf( ` - pub %[1]s interface Test { + access(all) %[1]s interface Test { %[2]s fun test() } - pub %[1]s TestImpl: Test { + access(all) %[1]s TestImpl: Test { %[2]s fun test() {} - pub fun test2() { + access(all) fun test2() { self.test() } } - pub fun test() { + access(all) fun test() { %[3]s %[4]s.test() %[5]s @@ -901,19 +901,19 @@ func TestCheckAccessCompositeFieldRead(t *testing.T) { _, err := ParseAndCheckWithOptions(t, fmt.Sprintf( ` - pub %[1]s Test { + access(all) %[1]s Test { %[2]s var test: Int init() { self.test = 0 } - pub fun test2() { + access(all) fun test2() { self.test } } - pub fun test() { + access(all) fun test() { %[3]s %[4]s.test %[5]s @@ -1012,23 +1012,23 @@ func TestCheckAccessInterfaceFieldRead(t *testing.T) { _, err := ParseAndCheckWithOptions(t, fmt.Sprintf( ` - pub %[1]s interface Test { + access(all) %[1]s interface Test { %[2]s var test: Int } - pub %[1]s TestImpl: Test { + access(all) %[1]s TestImpl: Test { %[2]s var test: Int init() { self.test = 0 } - pub fun test2() { + access(all) fun test2() { self.test } } - pub fun test() { + access(all) fun test() { %[3]s %[4]s.test %[5]s @@ -1122,21 +1122,21 @@ func TestCheckAccessCompositeFieldAssignmentAndSwap(t *testing.T) { _, err := ParseAndCheckWithOptions(t, fmt.Sprintf( ` - pub %[1]s Test { + access(all) %[1]s Test { %[2]s var test: Int init() { self.test = 0 } - pub fun test2() { + access(all) fun test2() { self.test = 1 var temp = 2 self.test <-> temp } } - pub fun test() { + access(all) fun test() { %[3]s %[4]s.test = 3 @@ -1259,25 +1259,25 @@ func TestCheckAccessInterfaceFieldWrite(t *testing.T) { _, err := ParseAndCheckWithOptions(t, fmt.Sprintf( ` - pub %[1]s interface Test { + access(all) %[1]s interface Test { %[2]s var test: Int } - pub %[1]s TestImpl: Test { + access(all) %[1]s TestImpl: Test { %[2]s var test: Int init() { self.test = 0 } - pub fun test2() { + access(all) fun test2() { self.test = 1 var temp = 2 self.test <-> temp } } - pub fun test() { + access(all) fun test() { %[3]s %[4]s.test = 3 var temp = 4 @@ -1354,9 +1354,9 @@ func TestCheckAccessCompositeFieldVariableDeclarationWithSecondValue(t *testing. _, err := ParseAndCheckWithOptions(t, fmt.Sprintf( ` - pub resource A {} + access(all) resource A {} - pub resource B { + access(all) resource B { %[1]s var a: @A init() { @@ -1367,13 +1367,13 @@ func TestCheckAccessCompositeFieldVariableDeclarationWithSecondValue(t *testing. destroy self.a } - pub fun test() { + access(all) fun test() { let oldA <- self.a <- create A() destroy oldA } } - pub fun test() { + access(all) fun test() { let b <- create B() let oldA <- b.a <- create A() destroy oldA @@ -1458,13 +1458,13 @@ func TestCheckAccessInterfaceFieldVariableDeclarationWithSecondValue(t *testing. _, err := ParseAndCheckWithOptions(t, fmt.Sprintf( ` - pub resource A {} + access(all) resource A {} - pub resource interface B { + access(all) resource interface B { %[1]s var a: @A } - pub resource BImpl: B { + access(all) resource BImpl: B { %[1]s var a: @A init() { @@ -1475,13 +1475,13 @@ func TestCheckAccessInterfaceFieldVariableDeclarationWithSecondValue(t *testing. destroy self.a } - pub fun test() { + access(all) fun test() { let oldA <- self.a <- create A() destroy oldA } } - pub fun test() { + access(all) fun test() { let b: @AnyResource{B} <- create BImpl() let oldA <- b.a <- create A() destroy oldA @@ -1558,14 +1558,14 @@ func TestCheckAccessImportGlobalValue(t *testing.T) { lastAccessModifier := "" if checkMode == sema.AccessCheckModeStrict { - lastAccessModifier = "priv" + lastAccessModifier = "access(self)" } tests := []string{ fmt.Sprintf( ` - priv fun a() {} - pub fun b() {} + access(self) fun a() {} + access(all) fun b() {} %s fun c() {} `, lastAccessModifier, @@ -1577,8 +1577,8 @@ func TestCheckAccessImportGlobalValue(t *testing.T) { tests = append(tests, fmt.Sprintf( ` - priv %[1]s a = 1 - pub %[1]s b = 2 + access(self) %[1]s a = 1 + access(all) %[1]s b = 2 %[2]s %[1]s c = 3 `, variableKind.Keyword(), @@ -1768,14 +1768,14 @@ func TestCheckAccessImportGlobalValueAssignmentAndSwap(t *testing.T) { lastAccessModifier := "" if checkMode == sema.AccessCheckModeStrict { - lastAccessModifier = "priv" + lastAccessModifier = "access(self)" } imported, err := ParseAndCheck(t, fmt.Sprintf( ` - priv var a = 1 - pub var b = 2 + access(self) var a = 1 + access(all) var b = 2 %s var c = 3 `, lastAccessModifier, @@ -1787,7 +1787,7 @@ func TestCheckAccessImportGlobalValueAssignmentAndSwap(t *testing.T) { ` import a, b, c from "imported" - pub fun test() { + access(all) fun test() { a = 4 b = 5 c = 6 @@ -1824,14 +1824,14 @@ func TestCheckAccessImportGlobalValueVariableDeclarationWithSecondValue(t *testi t.Parallel() imported, err := ParseAndCheck(t, ` - pub resource R {} + access(all) resource R {} - pub fun createR(): @R { + access(all) fun createR(): @R { return <-create R() } - priv var x <- createR() - pub var y <- createR() + access(self) var x <- createR() + access(all) var y <- createR() `) require.NoError(t, err) @@ -1839,7 +1839,7 @@ func TestCheckAccessImportGlobalValueVariableDeclarationWithSecondValue(t *testi ` import x, y, createR from "imported" - pub fun test() { + access(all) fun test() { let oldX <- x <- createR() destroy oldX @@ -1889,7 +1889,7 @@ func TestCheckContractNestedDeclarationPrivateAccess(t *testing.T) { const contract = ` contract Outer { - priv let num: Int + access(self) let num: Int init(num: Int) { self.num = num @@ -2139,17 +2139,17 @@ func TestCheckRestrictiveAccessModifier(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf( ` - pub contract interface CI { + access(all) contract interface CI { - pub resource R { + access(all) resource R { %[1]s var x: Int } } - pub contract C: CI { + access(all) contract C: CI { - pub resource R { + access(all) resource R { %[1]s var x: Int @@ -2171,12 +2171,12 @@ func TestCheckRestrictiveAccessModifier(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf( ` - pub resource interface RI { + access(all) resource interface RI { %[1]s var x: Int } - pub resource R: RI { + access(all) resource R: RI { %[1]s var x: Int @@ -2215,9 +2215,9 @@ func TestCheckInvalidRestrictiveAccessModifier(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf( ` - pub contract interface CI { + access(all) contract interface CI { - pub resource R { + access(all) resource R { %[1]s var x: Int } @@ -2235,7 +2235,7 @@ func TestCheckInvalidRestrictiveAccessModifier(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf( ` - pub resource interface RI { + access(all) resource interface RI { %[1]s var x: Int } @@ -2274,8 +2274,8 @@ func TestCheckAccountAccess(t *testing.T) { const importingCode = ` import A from 0x1 - pub contract B { - pub fun use() { + access(all) contract B { + access(all) fun use() { let b = A.a } } @@ -2314,7 +2314,7 @@ func TestCheckAccountAccess(t *testing.T) { importedChecker, err := ParseAndCheckWithOptions(t, fmt.Sprintf( ` - pub contract A { + access(all) contract A { access(account) %s a: Int init() { diff --git a/runtime/tests/checker/assert_test.go b/runtime/tests/checker/assert_test.go index a726834519..c41f0b1d1b 100644 --- a/runtime/tests/checker/assert_test.go +++ b/runtime/tests/checker/assert_test.go @@ -36,7 +36,7 @@ func TestCheckAssertWithoutMessage(t *testing.T) { _, err := ParseAndCheckWithOptions(t, ` - pub fun test() { + access(all) fun test() { assert(1 == 2) } `, @@ -59,7 +59,7 @@ func TestCheckAssertWithMessage(t *testing.T) { _, err := ParseAndCheckWithOptions(t, ` - pub fun test() { + access(all) fun test() { assert(1 == 2, message: "test message") } `, diff --git a/runtime/tests/checker/attachments_test.go b/runtime/tests/checker/attachments_test.go index 9ddf7ab5ef..154c7b0846 100644 --- a/runtime/tests/checker/attachments_test.go +++ b/runtime/tests/checker/attachments_test.go @@ -450,7 +450,7 @@ func TestCheckNestedBaseType(t *testing.T) { fun foo() {} } } - pub attachment A for C.S { + access(all) attachment A for C.S { fun bar() { base.foo() } @@ -472,7 +472,7 @@ func TestCheckNestedBaseType(t *testing.T) { fun foo() {} } } - pub attachment A for S { + access(all) attachment A for S { } `, ) @@ -1347,16 +1347,16 @@ func TestCheckBaseScoping(t *testing.T) { t.Parallel() - t.Run("pub member", func(t *testing.T) { + t.Run("access(all) member", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub struct S { - pub fun foo() {} + access(all) struct S { + access(all) fun foo() {} } - pub attachment Test for S { + access(all) attachment Test for S { fun foo() { base.foo() } @@ -1366,16 +1366,16 @@ func TestCheckBaseScoping(t *testing.T) { require.NoError(t, err) }) - t.Run("priv member", func(t *testing.T) { + t.Run("access(self) member", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub struct S { - priv fun foo() {} + access(all) struct S { + access(self) fun foo() {} } - pub attachment Test for S { + access(all) attachment Test for S { fun foo() { base.foo() } @@ -1393,12 +1393,12 @@ func TestCheckBaseScoping(t *testing.T) { _, err := ParseAndCheck(t, ` - pub contract C { - pub struct S { + access(all) contract C { + access(all) struct S { access(contract) fun foo() {} } } - pub attachment Test for C.S { + access(all) attachment Test for C.S { fun foo() { base.foo() } @@ -1416,11 +1416,11 @@ func TestCheckBaseScoping(t *testing.T) { _, err := ParseAndCheck(t, ` - pub contract C { - pub struct S { + access(all) contract C { + access(all) struct S { access(contract) fun foo() {} } - pub attachment Test for S { + access(all) attachment Test for S { fun foo() { base.foo() } @@ -1759,7 +1759,7 @@ func TestCheckIllegalInit(t *testing.T) { _, err := ParseAndCheck(t, `attachment Test for AnyResource {} - pub fun foo() { + access(all) fun foo() { let t <- Test() destroy t } @@ -1782,8 +1782,8 @@ func TestCheckAttachNonAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun A() {} - pub fun foo() { + access(all) fun A() {} + access(all) fun foo() { attach A() to 4 } `, @@ -1800,8 +1800,8 @@ func TestCheckAttachNonAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` - pub struct S {} - pub fun foo() { + access(all) struct S {} + access(all) fun foo() { attach S() to 4 } `, @@ -1818,8 +1818,8 @@ func TestCheckAttachNonAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` - pub resource R {} - pub fun foo() { + access(all) resource R {} + access(all) fun foo() { attach R() to 4 } `, @@ -1839,7 +1839,7 @@ func TestCheckAttachNonAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` event E() - pub fun foo() { + access(all) fun foo() { attach E() to 4 } `, @@ -1857,7 +1857,7 @@ func TestCheckAttachNonAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` enum E: Int {} - pub fun foo() { + access(all) fun foo() { attach E(rawValue: 0) to 4 } `, @@ -1875,7 +1875,7 @@ func TestCheckAttachNonAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` contract C {} - pub fun foo() { + access(all) fun foo() { attach C() to 4 } `, @@ -1898,7 +1898,7 @@ func TestCheckAttachToNonComposite(t *testing.T) { _, err := ParseAndCheck(t, ` attachment A for AnyStruct {} - pub fun foo() { + access(all) fun foo() { attach A() to 4 } `, @@ -1917,7 +1917,7 @@ func TestCheckAttachToNonComposite(t *testing.T) { ` struct S{} attachment A for AnyStruct {} - pub fun foo() { + access(all) fun foo() { let s = S() attach A() to (&s as &S) } @@ -1936,7 +1936,7 @@ func TestCheckAttachToNonComposite(t *testing.T) { _, err := ParseAndCheck(t, ` attachment A for AnyResource {} - pub fun foo() { + access(all) fun foo() { attach A() to 4 } `, @@ -1955,7 +1955,7 @@ func TestCheckAttachToNonComposite(t *testing.T) { _, err := ParseAndCheck(t, ` attachment A for AnyStruct {} - pub fun foo() { + access(all) fun foo() { attach A() to [4] } `, @@ -1974,7 +1974,7 @@ func TestCheckAttachToNonComposite(t *testing.T) { ` attachment A for AnyStruct {} event E() - pub fun foo() { + access(all) fun foo() { attach A() to E() } `, @@ -1993,7 +1993,7 @@ func TestCheckAttachToNonComposite(t *testing.T) { ` attachment A for AnyStruct {} contract C {} - pub fun foo() { + access(all) fun foo() { attach A() to C() } `, @@ -2012,7 +2012,7 @@ func TestCheckAttachToNonComposite(t *testing.T) { ` attachment A for AnyStruct {} attachment B for AnyStruct {} - pub fun foo() { + access(all) fun foo() { attach A() to B() } `, @@ -2031,7 +2031,7 @@ func TestCheckAttachToNonComposite(t *testing.T) { ` attachment A for AnyStruct {} enum E: Int { } - pub fun foo() { + access(all) fun foo() { attach A() to E(rawValue: 0) } `, @@ -2050,7 +2050,7 @@ func TestCheckAttachToNonComposite(t *testing.T) { ` resource R {} attachment A for AnyResource {} - pub fun foo() { + access(all) fun foo() { let r <- attach A() to <-[<-create R()] destroy r } @@ -2075,7 +2075,7 @@ func TestCheckAttach(t *testing.T) { ` struct S {} attachment A for S {} - pub fun foo() { + access(all) fun foo() { attach A() to S() } `, @@ -2092,7 +2092,7 @@ func TestCheckAttach(t *testing.T) { ` resource R {} attachment A for R {} - pub fun foo() { + access(all) fun foo() { attach A() to <-create R() } `, @@ -2111,7 +2111,7 @@ func TestCheckAttach(t *testing.T) { ` resource R {} attachment A for R {} - pub fun foo() { + access(all) fun foo() { let r <- attach A() to <-create R() destroy r } @@ -2129,7 +2129,7 @@ func TestCheckAttach(t *testing.T) { ` resource R {} attachment A for R {} - pub fun foo() { + access(all) fun foo() { let r <- create R() let r2: @R <- attach A() to <-r destroy r2 @@ -2148,7 +2148,7 @@ func TestCheckAttach(t *testing.T) { ` resource R {} attachment A for R {} - pub fun foo() { + access(all) fun foo() { let r <- attach A() to create R() destroy r } @@ -2168,7 +2168,7 @@ func TestCheckAttach(t *testing.T) { ` struct S {} attachment A for AnyStruct {} - pub fun foo() { + access(all) fun foo() { attach A() to S() } `, @@ -2185,7 +2185,7 @@ func TestCheckAttach(t *testing.T) { ` struct S {} attachment A for AnyStruct {} - pub fun foo() { + access(all) fun foo() { attach A() to (S() as AnyStruct) } `, @@ -2204,7 +2204,7 @@ func TestCheckAttach(t *testing.T) { ` resource S {} attachment A for AnyResource {} - pub fun foo() { + access(all) fun foo() { destroy attach A() to <-(create S() as @AnyResource) } `, @@ -2223,7 +2223,7 @@ func TestCheckAttach(t *testing.T) { ` resource R {} attachment A for AnyResource {} - pub fun foo() { + access(all) fun foo() { let r <- attach A() to <-create R() destroy r } @@ -2242,7 +2242,7 @@ func TestCheckAttach(t *testing.T) { struct S: I {} struct interface I {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { attach A() to S() } `, @@ -2260,7 +2260,7 @@ func TestCheckAttach(t *testing.T) { struct S {} struct interface I {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { attach A() to S() } `, @@ -2280,7 +2280,7 @@ func TestCheckAttach(t *testing.T) { resource R: I {} resource interface I {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { let r <- attach A() to <-create R() destroy r } @@ -2299,7 +2299,7 @@ func TestCheckAttach(t *testing.T) { resource R {} resource interface I {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { let r <- attach A() to <-create R() destroy r } @@ -2320,7 +2320,7 @@ func TestCheckAttach(t *testing.T) { struct S {} resource interface I {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { let r <- attach A() to S() destroy r } @@ -2342,7 +2342,7 @@ func TestCheckAttach(t *testing.T) { resource R {} struct interface I {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { attach A() to <-create R() } `, @@ -2361,7 +2361,7 @@ func TestCheckAttach(t *testing.T) { ` resource R {} attachment A for AnyStruct {} - pub fun foo() { + access(all) fun foo() { attach A() to <-create R() } `, @@ -2380,7 +2380,7 @@ func TestCheckAttach(t *testing.T) { ` struct S {} attachment A for AnyResource {} - pub fun foo() { + access(all) fun foo() { let r <- attach A() to S() destroy r } @@ -2402,7 +2402,7 @@ func TestCheckAttach(t *testing.T) { struct interface I {} struct S: I {} attachment A for AnyStruct {} - pub fun foo() { + access(all) fun foo() { let s: S{I} = S() attach A() to s } @@ -2426,7 +2426,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { struct interface I {} struct S: I {} attachment A for AnyStruct {} - pub fun foo() { + access(all) fun foo() { let s: S{I} = S() attach A() to s } @@ -2445,7 +2445,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { struct interface I {} struct S: I {} attachment A for AnyStruct {} - pub fun foo() { + access(all) fun foo() { let s: {I} = S() attach A() to s } @@ -2464,7 +2464,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { resource interface I {} resource R: I {} attachment A for AnyResource {} - pub fun foo() { + access(all) fun foo() { let r: @R{I} <- create R() destroy attach A() to <-r } @@ -2483,7 +2483,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { resource interface I {} resource R: I {} attachment A for AnyResource {} - pub fun foo() { + access(all) fun foo() { let r: @{I} <- create R() destroy attach A() to <-r } @@ -2502,7 +2502,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { struct interface I {} struct S: I {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { let s: S{I} = S() attach A() to s } @@ -2521,7 +2521,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { struct interface I {} struct S: I {} attachment A for S {} - pub fun foo() { + access(all) fun foo() { let s: S{I} = S() attach A() to s } @@ -2543,7 +2543,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { struct interface I {} struct S: I {} attachment A for S {} - pub fun foo() { + access(all) fun foo() { let s: {I} = S() attach A() to s } @@ -2564,7 +2564,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { resource interface I {} resource R: I {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { let r: @R{I} <- create R() destroy attach A() to <-r } @@ -2583,7 +2583,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { resource interface I {} resource R: I {} attachment A for R {} - pub fun foo() { + access(all) fun foo() { let r: @R{I} <- create R() destroy attach A() to <-r } @@ -2605,7 +2605,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { resource interface I {} resource R: I {} attachment A for R {} - pub fun foo() { + access(all) fun foo() { let r: @{I} <- create R() destroy attach A() to <-r } @@ -2626,7 +2626,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { struct interface I {} struct S: I {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { let s: {I} = S() attach A() to s } @@ -2646,7 +2646,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { struct interface I2 {} struct S: I, I2 {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { let s: {I, I2} = S() attach A() to s } @@ -2665,7 +2665,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { resource interface I {} resource R: I {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { let r: @{I} <- create R() destroy attach A() to <-r } @@ -2685,7 +2685,7 @@ func TestCheckAttachToRestrictedType(t *testing.T) { resource interface I2 {} resource R: I, I2 {} attachment A for I {} - pub fun foo() { + access(all) fun foo() { let r: @{I, I2} <- create R() destroy attach A() to <-r } @@ -2715,7 +2715,7 @@ func TestCheckAttachWithArguments(t *testing.T) { self.x = x } } - pub fun foo() { + access(all) fun foo() { attach A(x: 3) to S() } `, @@ -2737,7 +2737,7 @@ func TestCheckAttachWithArguments(t *testing.T) { self.x = x } } - pub fun foo() { + access(all) fun foo() { attach A(x: base) to S() } `, @@ -2763,7 +2763,7 @@ func TestCheckAttachWithArguments(t *testing.T) { self.y = y } } - pub fun foo() { + access(all) fun foo() { attach A(x: 3, y: "") to S() } `, @@ -2787,7 +2787,7 @@ func TestCheckAttachWithArguments(t *testing.T) { self.y = y } } - pub fun foo() { + access(all) fun foo() { attach A(3, "") to S() } `, @@ -2814,7 +2814,7 @@ func TestCheckAttachWithArguments(t *testing.T) { self.y = y } } - pub fun foo() { + access(all) fun foo() { attach A(z: 3, a: "") to S() } `, @@ -2835,7 +2835,7 @@ func TestCheckAttachInvalidType(t *testing.T) { ` resource C {} attachment A for B {} - pub fun foo() { + access(all) fun foo() { destroy attach A() to <- create C() }`, ) @@ -2925,7 +2925,7 @@ func TestCheckAnyAttachmentTypes(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` %s - pub fun foo(x: &%s): &AnyStructAttachment { + access(all) fun foo(x: &%s): &AnyStructAttachment { return x } `, testCase.setupCode, testCase.subType), @@ -2948,7 +2948,7 @@ func TestCheckAnyAttachmentTypes(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` %s - pub fun foo(x: &%s): &AnyResourceAttachment { + access(all) fun foo(x: &%s): &AnyResourceAttachment { return x } `, testCase.setupCode, testCase.subType), @@ -2977,7 +2977,7 @@ func TestCheckRemove(t *testing.T) { ` struct S {} attachment A for S {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove A from s } `, @@ -2994,7 +2994,7 @@ func TestCheckRemove(t *testing.T) { ` resource R {} attachment A for R {} - pub fun foo(r: @R) { + access(all) fun foo(r: @R) { remove A from r destroy r } @@ -3012,7 +3012,7 @@ func TestCheckRemove(t *testing.T) { ` resource R {} attachment A for R {} - pub fun foo(r: @R) { + access(all) fun foo(r: @R) { remove A from r } `, @@ -3030,7 +3030,7 @@ func TestCheckRemove(t *testing.T) { ` struct S {} attachment A for AnyStruct {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove A from s } `, @@ -3048,7 +3048,7 @@ func TestCheckRemove(t *testing.T) { struct S: I {} struct interface I {} attachment A for I {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove A from s } `, @@ -3066,7 +3066,7 @@ func TestCheckRemove(t *testing.T) { struct S {} struct interface I {} attachment A for I {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove A from s } `, @@ -3084,7 +3084,7 @@ func TestCheckRemove(t *testing.T) { ` resource R {} attachment A for AnyResource {} - pub fun foo(r: @R) { + access(all) fun foo(r: @R) { remove A from r destroy r } @@ -3103,7 +3103,7 @@ func TestCheckRemove(t *testing.T) { resource R: I {} resource interface I {} attachment A for I {} - pub fun foo(r: @R) { + access(all) fun foo(r: @R) { remove A from r destroy r } @@ -3122,7 +3122,7 @@ func TestCheckRemove(t *testing.T) { resource R {} resource interface I {} attachment A for I {} - pub fun foo(r: @R) { + access(all) fun foo(r: @R) { remove A from r destroy r } @@ -3143,7 +3143,7 @@ func TestCheckRemove(t *testing.T) { struct S {} attachment A for S {} } - pub fun foo(s: C.S) { + access(all) fun foo(s: C.S) { remove C.A from s } `, @@ -3160,7 +3160,7 @@ func TestCheckRemove(t *testing.T) { ` struct S {} attachment A for S {} - pub fun foo(s: Int) { + access(all) fun foo(s: Int) { remove A from s } `, @@ -3177,7 +3177,7 @@ func TestCheckRemove(t *testing.T) { _, err := ParseAndCheck(t, ` attachment A for AnyStruct {} - pub fun foo(s: AnyStruct) { + access(all) fun foo(s: AnyStruct) { remove A from s } `, @@ -3194,7 +3194,7 @@ func TestCheckRemove(t *testing.T) { _, err := ParseAndCheck(t, ` attachment A for AnyResource {} - pub fun foo(s: @AnyResource) { + access(all) fun foo(s: @AnyResource) { remove A from s destroy s } @@ -3212,7 +3212,7 @@ func TestCheckRemove(t *testing.T) { _, err := ParseAndCheck(t, ` attachment A for AnyStruct {} - pub fun foo(s: Int) { + access(all) fun foo(s: Int) { remove A from s } `, @@ -3230,7 +3230,7 @@ func TestCheckRemove(t *testing.T) { ` struct S {} attachment A for S {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove S from s } `, @@ -3248,7 +3248,7 @@ func TestCheckRemove(t *testing.T) { ` resource S {} attachment A for S {} - pub fun foo(s: @S) { + access(all) fun foo(s: @S) { remove S from s destroy s } @@ -3267,7 +3267,7 @@ func TestCheckRemove(t *testing.T) { ` struct S {} attachment A for S {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove X from s } `, @@ -3285,7 +3285,7 @@ func TestCheckRemove(t *testing.T) { ` struct S {} event E() - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove E from s } `, @@ -3303,7 +3303,7 @@ func TestCheckRemove(t *testing.T) { ` struct S {} contract C {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove C from s } `, @@ -3321,7 +3321,7 @@ func TestCheckRemove(t *testing.T) { ` struct S {} resource interface C {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove C from s } `, @@ -3339,7 +3339,7 @@ func TestCheckRemove(t *testing.T) { ` struct S {} resource interface C {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove C from s } `, @@ -3356,7 +3356,7 @@ func TestCheckRemove(t *testing.T) { _, err := ParseAndCheck(t, ` struct S {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove AnyStruct from s } `, @@ -3373,7 +3373,7 @@ func TestCheckRemove(t *testing.T) { _, err := ParseAndCheck(t, ` resource S {} - pub fun foo(s: @S) { + access(all) fun foo(s: @S) { remove AnyResource from s destroy s } @@ -3391,7 +3391,7 @@ func TestCheckRemove(t *testing.T) { _, err := ParseAndCheck(t, ` struct S {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { remove AnyStructAttachment from s } `, @@ -3408,7 +3408,7 @@ func TestCheckRemove(t *testing.T) { _, err := ParseAndCheck(t, ` resource S {} - pub fun foo(s: @S) { + access(all) fun foo(s: @S) { remove AnyResourceAttachment from s destroy s } @@ -3434,7 +3434,7 @@ func TestCheckRemoveFromRestricted(t *testing.T) { struct S: I {} struct interface I {} attachment A for S {} - pub fun foo(s: S{I}) { + access(all) fun foo(s: S{I}) { remove A from s } `, @@ -3452,7 +3452,7 @@ func TestCheckRemoveFromRestricted(t *testing.T) { struct S: I {} struct interface I {} attachment A for I {} - pub fun foo(s: S{I}) { + access(all) fun foo(s: S{I}) { remove A from s } `, @@ -3470,7 +3470,7 @@ func TestCheckRemoveFromRestricted(t *testing.T) { resource S: I {} resource interface I {} attachment A for S {} - pub fun foo(s: @S{I}) { + access(all) fun foo(s: @S{I}) { remove A from s destroy s } @@ -3491,7 +3491,7 @@ func TestCheckRemoveFromRestricted(t *testing.T) { resource S: I {} resource interface I {} attachment A for I {} - pub fun foo(s: @S{I}) { + access(all) fun foo(s: @S{I}) { remove A from s destroy s } @@ -3510,7 +3510,7 @@ func TestCheckRemoveFromRestricted(t *testing.T) { struct S: I {} struct interface I {} attachment A for S {} - pub fun foo(s: {I}) { + access(all) fun foo(s: {I}) { remove A from s } `, @@ -3529,7 +3529,7 @@ func TestCheckRemoveFromRestricted(t *testing.T) { resource S: I {} resource interface I {} attachment A for S {} - pub fun foo(s: @{I}) { + access(all) fun foo(s: @{I}) { remove A from s destroy s } @@ -3548,7 +3548,7 @@ func TestCheckRemoveFromRestricted(t *testing.T) { ` struct interface I {} attachment A for I {} - pub fun foo(s: {I}) { + access(all) fun foo(s: {I}) { remove A from s } `, @@ -3565,7 +3565,7 @@ func TestCheckRemoveFromRestricted(t *testing.T) { ` resource interface I {} attachment A for I {} - pub fun foo(s: @{I}) { + access(all) fun foo(s: @{I}) { remove A from s destroy s } @@ -3585,7 +3585,7 @@ func TestCheckRemoveFromRestricted(t *testing.T) { struct interface I {} struct interface J {} attachment A for I {} - pub fun foo(s: S{I, J}) { + access(all) fun foo(s: S{I, J}) { remove A from s } `, @@ -3603,7 +3603,7 @@ func TestCheckRemoveFromRestricted(t *testing.T) { struct interface I {} struct interface J {} attachment A for I {} - pub fun foo(s: {I, J}) { + access(all) fun foo(s: {I, J}) { remove A from s } `, @@ -3625,7 +3625,7 @@ func TestCheckAccessAttachment(t *testing.T) { fmt.Sprintf(` resource R {} attachment A for R {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { let a: &A? = r[A] %s }`, sigil, destructor), @@ -3640,7 +3640,7 @@ func TestCheckAccessAttachment(t *testing.T) { fmt.Sprintf(` resource R {} attachment A for R {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { let a: &A? = r[Int] %s }`, sigil, destructor), @@ -3656,7 +3656,7 @@ func TestCheckAccessAttachment(t *testing.T) { fmt.Sprintf(` resource R {} struct D {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { r[D] %s }`, sigil, destructor), @@ -3672,7 +3672,7 @@ func TestCheckAccessAttachment(t *testing.T) { fmt.Sprintf(` resource R {} resource X {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { r[X] %s } @@ -3689,7 +3689,7 @@ func TestCheckAccessAttachment(t *testing.T) { fmt.Sprintf(` resource R {} contract X {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { r[X] %s } @@ -3706,7 +3706,7 @@ func TestCheckAccessAttachment(t *testing.T) { fmt.Sprintf(` resource R {} event X() - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { r[X] %s } @@ -3723,7 +3723,7 @@ func TestCheckAccessAttachment(t *testing.T) { fmt.Sprintf(` resource R {} enum X: Int {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { r[X] %s } @@ -3739,7 +3739,7 @@ func TestCheckAccessAttachment(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` resource R {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { r[AnyStructAttachment] %s } @@ -3755,7 +3755,7 @@ func TestCheckAccessAttachment(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` resource R {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { r[AnyResourceAttachment] %s } @@ -3771,7 +3771,7 @@ func TestCheckAccessAttachment(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` resource R {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { r[AnyStruct] %s } @@ -3787,7 +3787,7 @@ func TestCheckAccessAttachment(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` resource R {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { r[AnyResource] %s } @@ -3803,7 +3803,7 @@ func TestCheckAccessAttachment(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` attachment A for AnyResource {} - pub fun foo(r: %sAnyResource) { + access(all) fun foo(r: %sAnyResource) { r[A] %s } @@ -3821,7 +3821,7 @@ func TestCheckAccessAttachment(t *testing.T) { resource interface I {} resource R: I {} attachment A for I {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { let a: &A? = r[A] %s } @@ -3838,7 +3838,7 @@ func TestCheckAccessAttachment(t *testing.T) { resource R {} resource interface I {} attachment A for AnyResource: I {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { r[I] %s } @@ -3856,7 +3856,7 @@ func TestCheckAccessAttachment(t *testing.T) { resource interface I {} resource R {} attachment A for I {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { let a: &A? = r[A] %s } @@ -3873,7 +3873,7 @@ func TestCheckAccessAttachment(t *testing.T) { fmt.Sprintf(` resource R {} attachment A for R {} - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { r[A] = 3 %s } @@ -3892,7 +3892,7 @@ func TestCheckAccessAttachment(t *testing.T) { contract C { attachment A for R {} } - pub fun foo(r: %sR) { + access(all) fun foo(r: %sR) { let a: &C.A? = r[C.A] %s } @@ -3911,7 +3911,7 @@ func TestCheckAccessAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` attachment A for AnyStruct {} - pub fun foo(r: AnyStruct) { + access(all) fun foo(r: AnyStruct) { r[A] } `, @@ -3927,7 +3927,7 @@ func TestCheckAccessAttachment(t *testing.T) { ` attachment A for S {} struct S {} - pub fun foo(r: S) { + access(all) fun foo(r: S) { r[[A]] } `, @@ -3949,7 +3949,7 @@ func TestCheckAccessAttachmentRestricted(t *testing.T) { struct R: I {} struct interface I {} attachment A for I {} - pub fun foo(r: R{I}) { + access(all) fun foo(r: R{I}) { r[A] } `, @@ -3965,7 +3965,7 @@ func TestCheckAccessAttachmentRestricted(t *testing.T) { struct R: I {} struct interface I {} attachment A for R {} - pub fun foo(r: {I}) { + access(all) fun foo(r: {I}) { r[A] } `, @@ -3982,7 +3982,7 @@ func TestCheckAccessAttachmentRestricted(t *testing.T) { struct R: I {} struct interface I {} attachment A for R {} - pub fun foo(r: &R{I}) { + access(all) fun foo(r: &R{I}) { r[A] } `, @@ -3998,7 +3998,7 @@ func TestCheckAccessAttachmentRestricted(t *testing.T) { struct R: I {} struct interface I {} attachment A for R {} - pub fun foo(r: &{I}) { + access(all) fun foo(r: &{I}) { r[A] } `, @@ -4014,7 +4014,7 @@ func TestCheckAccessAttachmentRestricted(t *testing.T) { ` struct interface I {} attachment A for I {} - pub fun foo(r: {I}) { + access(all) fun foo(r: {I}) { r[A] } `, @@ -4029,7 +4029,7 @@ func TestCheckAccessAttachmentRestricted(t *testing.T) { ` struct interface I {} attachment A for I {} - pub fun foo(r: &{I}) { + access(all) fun foo(r: &{I}) { r[A] } `, @@ -4045,7 +4045,7 @@ func TestCheckAccessAttachmentRestricted(t *testing.T) { struct interface I {} struct interface J {} attachment A for I {} - pub fun foo(r: {J}) { + access(all) fun foo(r: {J}) { r[A] } `, @@ -4064,7 +4064,7 @@ func TestCheckAccessAttachmentRestricted(t *testing.T) { struct interface I {} struct interface J {} attachment A for I {} - pub fun foo(r: R{J}) { + access(all) fun foo(r: R{J}) { r[A] } `, @@ -4083,7 +4083,7 @@ func TestCheckAccessAttachmentRestricted(t *testing.T) { struct interface I {} struct interface J {} attachment A for I {} - pub fun foo(r: &R{J}) { + access(all) fun foo(r: &R{J}) { r[A] } `, @@ -4101,7 +4101,7 @@ func TestCheckAccessAttachmentRestricted(t *testing.T) { struct interface I {} struct interface J {} attachment A for I {} - pub fun foo(r: {I, J}) { + access(all) fun foo(r: {I, J}) { r[A] } `, @@ -4118,7 +4118,7 @@ func TestCheckAccessAttachmentRestricted(t *testing.T) { struct interface I {} struct interface J {} attachment A for I {} - pub fun foo(r: &{I, J}) { + access(all) fun foo(r: &{I, J}) { r[A] } `, @@ -4137,9 +4137,9 @@ func TestCheckAttachmentsExternalMutation(t *testing.T) { _, err := ParseAndCheck(t, ` - pub resource R {} - pub attachment A for R { - pub let x: [String] + access(all) resource R {} + access(all) attachment A for R { + access(all) let x: [String] init() { self.x = ["x"] } @@ -4162,13 +4162,13 @@ func TestCheckAttachmentsExternalMutation(t *testing.T) { _, err := ParseAndCheck(t, ` - pub resource R { - pub fun foo() { + access(all) resource R { + access(all) fun foo() { self[A]!.x.append("y") } } - pub attachment A for R { - pub let x: [String] + access(all) attachment A for R { + access(all) let x: [String] init() { self.x = ["x"] } @@ -4187,13 +4187,13 @@ func TestCheckAttachmentsExternalMutation(t *testing.T) { _, err := ParseAndCheck(t, ` - pub resource R {} - pub attachment A for R { - pub let x: [String] + access(all) resource R {} + access(all) attachment A for R { + access(all) let x: [String] init() { self.x = ["x"] } - pub fun foo() { + access(all) fun foo() { base[A]!.x.append("y") } } @@ -4214,9 +4214,9 @@ func TestInterpretAttachmentBaseNonMember(t *testing.T) { _, err := ParseAndCheck(t, ` - pub resource R {} - pub attachment A for R { - pub let base: &R + access(all) resource R {} + access(all) attachment A for R { + access(all) let base: &R init() { self.base = base } @@ -4232,9 +4232,9 @@ func TestInterpretAttachmentBaseNonMember(t *testing.T) { _, err := ParseAndCheck(t, ` - pub resource R {} - pub attachment A for R { - pub let bases: [&R] + access(all) resource R {} + access(all) attachment A for R { + access(all) let bases: [&R] init() { self.bases = [base] } @@ -4250,9 +4250,9 @@ func TestInterpretAttachmentBaseNonMember(t *testing.T) { _, err := ParseAndCheck(t, ` - pub resource R {} - pub attachment A for R { - pub let bases: [&R] + access(all) resource R {} + access(all) attachment A for R { + access(all) let bases: [&R] init() { self.bases = [] self.bases.append(base) @@ -4269,9 +4269,9 @@ func TestInterpretAttachmentBaseNonMember(t *testing.T) { _, err := ParseAndCheck(t, ` - pub resource R {} - pub attachment A for R { - pub let bases: [&R] + access(all) resource R {} + access(all) attachment A for R { + access(all) let bases: [&R] init() { self.bases = [] self.bases[0] = base @@ -4412,7 +4412,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: &AnyStructAttachment) {} struct A {} - pub fun foo(s: A) { + access(all) fun foo(s: A) { s.forEachAttachment(bar) } `, @@ -4429,7 +4429,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: &AnyStructAttachment): Bool { return false } struct A {} - pub fun foo(s: A) { + access(all) fun foo(s: A) { s.forEachAttachment(bar) } `, @@ -4447,7 +4447,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: AnyStructAttachment) { } struct A {} - pub fun foo(s: A) { + access(all) fun foo(s: A) { s.forEachAttachment(bar) } `, @@ -4465,7 +4465,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: &AnyResource) { } struct A {} - pub fun foo(s: A) { + access(all) fun foo(s: A) { s.forEachAttachment(bar) } `, @@ -4483,7 +4483,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: &AnyStruct) { } struct A {} - pub fun foo(s: A) { + access(all) fun foo(s: A) { s.forEachAttachment(bar) } `, @@ -4500,7 +4500,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: &AnyResourceAttachment) {} resource A {} - pub fun foo(s: @A) { + access(all) fun foo(s: @A) { s.forEachAttachment(bar) destroy s } @@ -4518,7 +4518,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: &AnyStructAttachment) {} resource A {} - pub fun foo(s: @A) { + access(all) fun foo(s: @A) { s.forEachAttachment(bar) destroy s } @@ -4536,7 +4536,7 @@ func TestCheckForEachAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` fun bar (_: &AnyResourceAttachment) {} - pub fun foo(s: AnyStruct) { + access(all) fun foo(s: AnyStruct) { s.forEachAttachment(bar) } `, @@ -4552,7 +4552,7 @@ func TestCheckForEachAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` fun bar (_: &AnyResourceAttachment) {} - pub fun foo(s: @AnyResource) { + access(all) fun foo(s: @AnyResource) { s.forEachAttachment(bar) destroy s } @@ -4569,7 +4569,7 @@ func TestCheckForEachAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` fun bar (_: &AnyResourceAttachment) {} - pub fun foo(s: &AnyResourceAttachment) { + access(all) fun foo(s: &AnyResourceAttachment) { s.forEachAttachment(bar) } `, @@ -4585,7 +4585,7 @@ func TestCheckForEachAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` fun bar (_: &AnyStructAttachment) {} - pub fun foo(s: &AnyStructAttachment) { + access(all) fun foo(s: &AnyStructAttachment) { s.forEachAttachment(bar) } `, @@ -4602,7 +4602,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: &AnyStructAttachment) {} event E() - pub fun foo(s: E) { + access(all) fun foo(s: E) { s.forEachAttachment(bar) } `, @@ -4619,7 +4619,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: &AnyStructAttachment) {} contract C {} - pub fun foo(s: C) { + access(all) fun foo(s: C) { s.forEachAttachment(bar) } `, @@ -4636,7 +4636,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: &AnyStructAttachment) {} enum S:Int {} - pub fun foo(s: S) { + access(all) fun foo(s: S) { s.forEachAttachment(bar) } `, @@ -4653,7 +4653,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: &AnyStructAttachment) {} attachment S for AnyStruct {} - pub fun foo(s: &S) { + access(all) fun foo(s: &S) { s.forEachAttachment(bar) } `, @@ -4670,7 +4670,7 @@ func TestCheckForEachAttachment(t *testing.T) { ` fun bar (_: &AnyStructAttachment) {} attachment R for AnyResource {} - pub fun foo(s: &R) { + access(all) fun foo(s: &R) { s.forEachAttachment(bar) } `, @@ -4685,8 +4685,8 @@ func TestCheckForEachAttachment(t *testing.T) { _, err := ParseAndCheck(t, ` - pub struct S { - pub fun forEachAttachment() {} + access(all) struct S { + access(all) fun forEachAttachment() {} } `, ) @@ -4715,7 +4715,7 @@ func TestCheckForEachAttachment(t *testing.T) { access(M) attachment A for R { access(F) fun foo() {} } - pub fun foo(s: @R) { + access(all) fun foo(s: @R) { s.forEachAttachment(bar) destroy s } diff --git a/runtime/tests/checker/casting_test.go b/runtime/tests/checker/casting_test.go index d0a081633b..93e476f0fe 100644 --- a/runtime/tests/checker/casting_test.go +++ b/runtime/tests/checker/casting_test.go @@ -6628,7 +6628,7 @@ func TestCheckStaticCastElaboration(t *testing.T) { let y = x.bar as String struct Foo { - pub var bar: String + access(all) var bar: String init() { self.bar = "hello" diff --git a/runtime/tests/checker/composite_test.go b/runtime/tests/checker/composite_test.go index 06d768dec5..166026925a 100644 --- a/runtime/tests/checker/composite_test.go +++ b/runtime/tests/checker/composite_test.go @@ -113,7 +113,7 @@ func TestCheckComposite(t *testing.T) { self.foo = foo } - pub fun getFoo(): Int { + access(all) fun getFoo(): Int { return self.foo } } @@ -2208,7 +2208,7 @@ func TestCheckInvalidStructureFunctionWithMissingBody(t *testing.T) { _, err := ParseAndCheck(t, ` struct Test { - pub fun getFoo(): Int + access(all) fun getFoo(): Int } `) diff --git a/runtime/tests/checker/conformance_test.go b/runtime/tests/checker/conformance_test.go index 2308048197..668d48f4b4 100644 --- a/runtime/tests/checker/conformance_test.go +++ b/runtime/tests/checker/conformance_test.go @@ -33,14 +33,14 @@ func TestCheckInvalidEventTypeRequirementConformance(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub contract interface CI { + access(all) contract interface CI { - pub event E(a: Int) + access(all) event E(a: Int) } - pub contract C: CI { + access(all) contract C: CI { - pub event E(b: String) + access(all) event E(b: String) } `) @@ -59,11 +59,11 @@ func TestCheckTypeRequirementConformance(t *testing.T) { ` %s - pub contract interface CI { + access(all) contract interface CI { %s } - pub contract C: CI { + access(all) contract C: CI { %s } `, @@ -88,8 +88,8 @@ func TestCheckTypeRequirementConformance(t *testing.T) { test( ``, - `pub struct S {}`, - `pub struct S {}`, + `access(all) struct S {}`, + `access(all) struct S {}`, true, ) }) @@ -101,10 +101,10 @@ func TestCheckTypeRequirementConformance(t *testing.T) { test( ``, ` - pub struct S {} + access(all) struct S {} `, ` - pub struct S { + access(all) struct S { fun foo() {} } `, @@ -119,12 +119,12 @@ func TestCheckTypeRequirementConformance(t *testing.T) { test( ``, ` - pub struct S { + access(all) struct S { fun foo() } `, ` - pub struct S {} + access(all) struct S {} `, false, ) @@ -137,12 +137,12 @@ func TestCheckTypeRequirementConformance(t *testing.T) { test( ``, ` - pub struct S { + access(all) struct S { fun foo(x: Int) } `, ` - pub struct S { + access(all) struct S { fun foo(y: Int) {} } `, @@ -157,12 +157,12 @@ func TestCheckTypeRequirementConformance(t *testing.T) { test( ``, ` - pub struct S { + access(all) struct S { fun foo(x: Int) } `, ` - pub struct S { + access(all) struct S { fun foo(x: String) {} } `, @@ -177,12 +177,12 @@ func TestCheckTypeRequirementConformance(t *testing.T) { test( ``, ` - pub struct S { + access(all) struct S { fun foo(x y: String) } `, ` - pub struct S { + access(all) struct S { fun foo(x z: String) {} } `, @@ -196,16 +196,16 @@ func TestCheckTypeRequirementConformance(t *testing.T) { test( ` - pub struct interface I {} - pub struct T: I {} + access(all) struct interface I {} + access(all) struct T: I {} `, ` - pub struct S { + access(all) struct S { fun foo(bar: {I}) } `, ` - pub struct S { + access(all) struct S { fun foo(bar: T) {} } `, @@ -219,17 +219,17 @@ func TestCheckTypeRequirementConformance(t *testing.T) { test( ` - pub contract X { + access(all) contract X { struct Bar {} } `, ` - pub struct S { + access(all) struct S { fun foo(bar: X.Bar) } `, ` - pub struct S { + access(all) struct S { fun foo(bar: X.Bar) {} } `, @@ -243,21 +243,21 @@ func TestCheckTypeRequirementConformance(t *testing.T) { test( ` - pub contract X { + access(all) contract X { struct Bar {} } - pub contract Y { + access(all) contract Y { struct Bar {} } `, ` - pub struct S { + access(all) struct S { fun foo(bar: X.Bar) } `, ` - pub struct S { + access(all) struct S { fun foo(bar: Y.Bar) {} } `, @@ -508,12 +508,12 @@ func TestCheckInitializerConformanceErrorMessages(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub resource interface I { + access(all) resource interface I { let x: Int init(x: Int) } - pub resource R: I { + access(all) resource R: I { let x: Int init() { self.x = 1 @@ -532,8 +532,8 @@ func TestCheckInitializerConformanceErrorMessages(t *testing.T) { require.Equal(t, &sema.MemberMismatchNote{ Range: ast.Range{ - StartPos: ast.Position{Offset: 142, Line: 9, Column: 8}, - EndPos: ast.Position{Offset: 145, Line: 9, Column: 11}, + StartPos: ast.Position{Offset: 158, Line: 9, Column: 8}, + EndPos: ast.Position{Offset: 161, Line: 9, Column: 11}, }, }, notes[0]) }) @@ -543,11 +543,11 @@ func TestCheckInitializerConformanceErrorMessages(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub resource interface I { + access(all) resource interface I { fun foo(): Int } - pub resource R: I { + access(all) resource R: I { } `) @@ -563,12 +563,12 @@ func TestCheckInitializerConformanceErrorMessages(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub resource interface I { + access(all) resource interface I { fun foo(): Int fun bar(): Int } - pub resource R: I { + access(all) resource R: I { } `) @@ -584,11 +584,11 @@ func TestCheckInitializerConformanceErrorMessages(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub contract interface I { - pub struct S {} + access(all) contract interface I { + access(all) struct S {} } - pub contract C: I { + access(all) contract C: I { } `) @@ -604,12 +604,12 @@ func TestCheckInitializerConformanceErrorMessages(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub contract interface I { - pub struct S {} - pub resource R {} + access(all) contract interface I { + access(all) struct S {} + access(all) resource R {} } - pub contract C: I { + access(all) contract C: I { } `) @@ -625,12 +625,12 @@ func TestCheckInitializerConformanceErrorMessages(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub contract interface I { - pub struct S {} - pub fun foo() + access(all) contract interface I { + access(all) struct S {} + access(all) fun foo() } - pub contract C: I { + access(all) contract C: I { } `) diff --git a/runtime/tests/checker/entitlements_test.go b/runtime/tests/checker/entitlements_test.go index 6b263f8ad9..74e28eefaa 100644 --- a/runtime/tests/checker/entitlements_test.go +++ b/runtime/tests/checker/entitlements_test.go @@ -42,10 +42,10 @@ func TestCheckBasicEntitlementDeclaration(t *testing.T) { assert.Equal(t, "E", entitlement.String()) }) - t.Run("priv access", func(t *testing.T) { + t.Run("access(self) access", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - priv entitlement E + access(self) entitlement E `) errs := RequireCheckerErrors(t, err, 1) @@ -87,10 +87,10 @@ func TestCheckBasicEntitlementMappingDeclaration(t *testing.T) { assert.Equal(t, 2, len(entitlement.Relations)) }) - t.Run("priv access", func(t *testing.T) { + t.Run("access(self) access", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - priv entitlement mapping M {} + access(self) entitlement mapping M {} `) errs := RequireCheckerErrors(t, err, 1) @@ -815,7 +815,7 @@ func TestCheckBasicEntitlementMappingAccess(t *testing.T) { struct S { access(M) fun foo(): auth(M) &Int { let x = &1 as auth(M) &Int - // cannot cast, because M may be pub + // cannot cast, because M may be access(all) let y: auth(F) &Int = x return y } @@ -2021,12 +2021,12 @@ func TestCheckEntitlementInheritance(t *testing.T) { require.IsType(t, &sema.ConformanceError{}, errs[0]) }) - t.Run("pub subtyping invalid", func(t *testing.T) { + t.Run("access(all) subtyping invalid", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` entitlement E struct interface I { - pub fun foo() + access(all) fun foo() } struct S: I { access(E) fun foo() {} @@ -2058,7 +2058,7 @@ func TestCheckEntitlementInheritance(t *testing.T) { require.IsType(t, &sema.ConformanceError{}, errs[0]) }) - t.Run("pub supertying invalid", func(t *testing.T) { + t.Run("access(all) supertying invalid", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` entitlement E @@ -2066,7 +2066,7 @@ func TestCheckEntitlementInheritance(t *testing.T) { access(E) fun foo() } struct S: I { - pub fun foo() {} + access(all) fun foo() {} } `) @@ -2163,7 +2163,7 @@ func TestCheckEntitlementInheritance(t *testing.T) { require.IsType(t, &sema.ConformanceError{}, errs[0]) }) - t.Run("priv supertying invalid", func(t *testing.T) { + t.Run("access(self) supertying invalid", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` entitlement E @@ -2171,7 +2171,7 @@ func TestCheckEntitlementInheritance(t *testing.T) { access(E) fun foo() } struct S: I { - priv fun foo() {} + access(self) fun foo() {} } `) @@ -2572,7 +2572,7 @@ func TestCheckEntitlementTypeAnnotation(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` entitlement E - pub fun foo(e: E) {} + access(all) fun foo(e: E) {} `) errs := RequireCheckerErrors(t, err, 1) @@ -2585,7 +2585,7 @@ func TestCheckEntitlementTypeAnnotation(t *testing.T) { _, err := ParseAndCheck(t, ` entitlement E resource interface I { - pub fun foo(): E + access(all) fun foo(): E } `) @@ -2797,7 +2797,7 @@ func TestCheckEntitlementMappingTypeAnnotation(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` entitlement mapping E {} - pub fun foo(e: E) {} + access(all) fun foo(e: E) {} `) errs := RequireCheckerErrors(t, err, 1) @@ -2810,7 +2810,7 @@ func TestCheckEntitlementMappingTypeAnnotation(t *testing.T) { _, err := ParseAndCheck(t, ` entitlement mapping E {} resource interface I { - pub fun foo(): E + access(all) fun foo(): E } `) @@ -3060,7 +3060,7 @@ func TestCheckEntitlementSetAccess(t *testing.T) { entitlement Z struct R { - pub fun p() {} + access(all) fun p() {} access(X) fun x() {} access(Y) fun y() {} @@ -3078,7 +3078,7 @@ func TestCheckEntitlementSetAccess(t *testing.T) { access(X | Y | Z) fun xyzOr() {} - priv fun private() {} + access(self) fun private() {} access(contract) fun c() {} access(account) fun a() {} } @@ -3597,7 +3597,7 @@ func TestCheckEntitlementMapAccess(t *testing.T) { errs := RequireCheckerErrors(t, err, 1) - // access results in pub access because D is not mapped + // access results in access(all) access because D is not mapped require.IsType(t, &sema.TypeMismatchError{}, errs[0]) require.Equal(t, errs[0].(*sema.TypeMismatchError).ExpectedType.QualifiedString(), "auth(D) &Int") require.Equal(t, errs[0].(*sema.TypeMismatchError).ActualType.QualifiedString(), "&Int") @@ -3946,7 +3946,7 @@ func TestCheckAttachmentEntitlements(t *testing.T) { let a: auth(Y) &A = self let b: &S = base } - pub fun unentitled() { + access(all) fun unentitled() { let a: auth(X, Y) &A = self // err let b: auth(X) &S = base // err } @@ -3974,10 +3974,10 @@ func TestCheckAttachmentEntitlements(t *testing.T) { struct S {} access(M) attachment A for S { require entitlement X - pub fun unentitled() { + access(all) fun unentitled() { let b: &S = base } - pub fun entitled() { + access(all) fun entitled() { let b: auth(X, Y) &S = base } } @@ -4000,10 +4000,10 @@ func TestCheckAttachmentEntitlements(t *testing.T) { } struct S {} access(M) attachment A for S { - pub fun unentitled() { + access(all) fun unentitled() { let b: &S = base } - pub fun entitled() { + access(all) fun entitled() { let b: auth(X) &S = base } } @@ -4028,10 +4028,10 @@ func TestCheckAttachmentEntitlements(t *testing.T) { access(M) attachment A for S { require entitlement X require entitlement Y - pub fun unentitled() { + access(all) fun unentitled() { let b: &S = base } - pub fun entitled() { + access(all) fun entitled() { let b: auth(X, Y) &S = base } } @@ -4058,7 +4058,7 @@ func TestCheckAttachmentEntitlements(t *testing.T) { access(F, Y) fun entitled() { let a: auth(F, Y) &A = self } - pub fun unentitled() { + access(all) fun unentitled() { let a: auth(F, Y, E) &A = self // err } } @@ -4163,7 +4163,7 @@ func TestCheckAttachmentEntitlements(t *testing.T) { require.IsType(t, &sema.InvalidMappedEntitlementMemberError{}, errs[0]) }) - t.Run("pub decl", func(t *testing.T) { + t.Run("access(all) decl", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` entitlement X @@ -4172,7 +4172,7 @@ func TestCheckAttachmentEntitlements(t *testing.T) { attachment A for S { access(Y) fun entitled() {} access(Y) let entitledField: Int - pub fun unentitled() { + access(all) fun unentitled() { let a: auth(Y) &A = self // err let b: auth(X) &S = base // err } @@ -4296,7 +4296,7 @@ func TestCheckAttachmentAccessEntitlements(t *testing.T) { require.Equal(t, errs[1].(*sema.TypeMismatchError).ActualType.QualifiedString(), "auth(F) &A?") }) - t.Run("pub access entitled attachment", func(t *testing.T) { + t.Run("access(all) access entitled attachment", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` entitlement X @@ -4320,7 +4320,7 @@ func TestCheckAttachmentAccessEntitlements(t *testing.T) { require.Equal(t, errs[0].(*sema.TypeMismatchError).ActualType.QualifiedString(), "&A?") }) - t.Run("entitled access pub attachment", func(t *testing.T) { + t.Run("entitled access access(all) attachment", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` entitlement X @@ -4331,8 +4331,8 @@ func TestCheckAttachmentAccessEntitlements(t *testing.T) { struct S { access(X) fun foo() {} } - pub attachment A for S { - pub fun foo() {} + access(all) attachment A for S { + access(all) fun foo() {} } let s = attach A() to S() let ref = &s as auth(X) &S @@ -4346,7 +4346,7 @@ func TestCheckAttachmentAccessEntitlements(t *testing.T) { require.Equal(t, errs[0].(*sema.TypeMismatchError).ActualType.QualifiedString(), "&A?") }) - t.Run("pub access pub attachment", func(t *testing.T) { + t.Run("access(all) access access(all) attachment", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` entitlement X @@ -4355,7 +4355,7 @@ func TestCheckAttachmentAccessEntitlements(t *testing.T) { X -> Y } struct S {} - pub attachment A for S {} + access(all) attachment A for S {} let s = attach A() to S() let ref = &s as &S let a1: auth(Y) &A = ref[A]! diff --git a/runtime/tests/checker/entrypoint_test.go b/runtime/tests/checker/entrypoint_test.go index 0126b98ddc..cf1547ae31 100644 --- a/runtime/tests/checker/entrypoint_test.go +++ b/runtime/tests/checker/entrypoint_test.go @@ -35,7 +35,7 @@ func TestEntryPointParameters(t *testing.T) { t.Parallel() checker, err := ParseAndCheck(t, ` - pub fun main() {} + access(all) fun main() {} `) require.NoError(t, err) @@ -50,7 +50,7 @@ func TestEntryPointParameters(t *testing.T) { t.Parallel() checker, err := ParseAndCheck(t, ` - pub fun main(a: Int) {} + access(all) fun main(a: Int) {} `) require.NoError(t, err) @@ -113,9 +113,9 @@ func TestEntryPointParameters(t *testing.T) { t.Parallel() checker, err := ParseAndCheck(t, ` - pub struct SomeStruct {} + access(all) struct SomeStruct {} - pub fun main(a: Int) {} + access(all) fun main(a: Int) {} `) require.NoError(t, err) @@ -139,9 +139,9 @@ func TestEntryPointParameters(t *testing.T) { t.Parallel() checker, err := ParseAndCheck(t, ` - pub struct interface SomeInterface {} + access(all) struct interface SomeInterface {} - pub fun main(a: Int) {} + access(all) fun main(a: Int) {} `) require.NoError(t, err) @@ -165,7 +165,7 @@ func TestEntryPointParameters(t *testing.T) { t.Parallel() checker, err := ParseAndCheck(t, ` - pub struct SomeStruct {} + access(all) struct SomeStruct {} transaction(a: Int) {} `) @@ -182,7 +182,7 @@ func TestEntryPointParameters(t *testing.T) { t.Parallel() checker, err := ParseAndCheck(t, ` - pub fun main(a: Int) {} + access(all) fun main(a: Int) {} transaction(a: Int) {} `) diff --git a/runtime/tests/checker/enum_test.go b/runtime/tests/checker/enum_test.go index c317d14195..6c8bab19cf 100644 --- a/runtime/tests/checker/enum_test.go +++ b/runtime/tests/checker/enum_test.go @@ -181,7 +181,7 @@ func TestCheckInvalidNonPublicEnumCase(t *testing.T) { _, err := ParseAndCheck(t, ` enum E: Int { - priv case a + access(self) case a } `) @@ -232,8 +232,8 @@ func TestCheckEnumInContract(t *testing.T) { _, err := ParseAndCheck(t, ` contract C { enum E: UInt8 { - pub case a - pub case b + access(all) case a + access(all) case b } var e: E diff --git a/runtime/tests/checker/errors_test.go b/runtime/tests/checker/errors_test.go index 50913ec55c..5426028f10 100644 --- a/runtime/tests/checker/errors_test.go +++ b/runtime/tests/checker/errors_test.go @@ -76,8 +76,8 @@ func TestCheckErrorShortCircuiting(t *testing.T) { _, err := ParseAndCheckWithOptions(t, ` - pub let x = X - pub let y = Y + access(all) let x = X + access(all) let y = Y `, ParseAndCheckOptions{ Location: utils.ImportedLocation, diff --git a/runtime/tests/checker/events_test.go b/runtime/tests/checker/events_test.go index c9288d25bb..8d5a6d4f23 100644 --- a/runtime/tests/checker/events_test.go +++ b/runtime/tests/checker/events_test.go @@ -261,7 +261,7 @@ func TestCheckEmitEvent(t *testing.T) { importedChecker, err := ParseAndCheckWithOptions(t, ` - pub event Transfer(to: Int, from: Int) + access(all) event Transfer(to: Int, from: Int) `, ParseAndCheckOptions{ Location: utils.ImportedLocation, @@ -272,7 +272,7 @@ func TestCheckEmitEvent(t *testing.T) { _, err = ParseAndCheckWithOptions(t, ` import Transfer from "imported" - pub fun test() { + access(all) fun test() { emit Transfer(to: 1, from: 2) } `, diff --git a/runtime/tests/checker/external_mutation_test.go b/runtime/tests/checker/external_mutation_test.go index 6bd11af75b..50744ad276 100644 --- a/runtime/tests/checker/external_mutation_test.go +++ b/runtime/tests/checker/external_mutation_test.go @@ -65,8 +65,8 @@ func TestCheckArrayUpdateIndexAccess(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` - pub contract C { - pub %s Foo { + access(all) contract C { + access(all) %s Foo { %s %s x: [Int] init() { @@ -74,7 +74,7 @@ func TestCheckArrayUpdateIndexAccess(t *testing.T) { } } - pub fun bar() { + access(all) fun bar() { let foo %s Foo() foo.x[0] = 3 %s @@ -134,8 +134,8 @@ func TestCheckDictionaryUpdateIndexAccess(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` - pub contract C { - pub %s Foo { + access(all) contract C { + access(all) %s Foo { %s %s x: {Int: Int} init() { @@ -143,7 +143,7 @@ func TestCheckDictionaryUpdateIndexAccess(t *testing.T) { } } - pub fun bar() { + access(all) fun bar() { let foo %s Foo() foo.x[0] = 3 %s @@ -191,15 +191,15 @@ func TestCheckNestedArrayUpdateIndexAccess(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` - pub contract C { - pub struct Bar { - pub let foo: Foo + access(all) contract C { + access(all) struct Bar { + access(all) let foo: Foo init() { self.foo = Foo() } } - pub struct Foo { + access(all) struct Foo { %s %s x: [Int] init() { @@ -207,7 +207,7 @@ func TestCheckNestedArrayUpdateIndexAccess(t *testing.T) { } } - pub fun bar() { + access(all) fun bar() { let bar = Bar() bar.foo.x[0] = 3 } @@ -252,15 +252,15 @@ func TestCheckNestedDictionaryUpdateIndexAccess(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` - pub contract C { - pub struct Bar { - pub let foo: Foo + access(all) contract C { + access(all) struct Bar { + access(all) let foo: Foo init() { self.foo = Foo() } } - pub struct Foo { + access(all) struct Foo { %s %s x: {Int: Int} init() { @@ -268,7 +268,7 @@ func TestCheckNestedDictionaryUpdateIndexAccess(t *testing.T) { } } - pub fun bar() { + access(all) fun bar() { let bar = Bar() bar.foo.x[0] = 3 } @@ -313,7 +313,7 @@ func TestCheckMutateContractIndexAccess(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` - pub contract Foo { + access(all) contract Foo { %s %s x: [Int] init() { @@ -321,7 +321,7 @@ func TestCheckMutateContractIndexAccess(t *testing.T) { } } - pub fun bar() { + access(all) fun bar() { Foo.x[0] = 1 } `, access.Keyword(), declaration.Keywords()), @@ -373,10 +373,10 @@ func TestCheckContractNestedStructIndexAccess(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` - pub contract Foo { - pub let x: S + access(all) contract Foo { + access(all) let x: S - pub struct S { + access(all) struct S { %s %s y: [Int] init() { self.y = [3] @@ -388,7 +388,7 @@ func TestCheckContractNestedStructIndexAccess(t *testing.T) { } } - pub fun bar() { + access(all) fun bar() { Foo.x.y[0] = 1 } `, access.Keyword(), declaration.Keywords()), @@ -440,10 +440,10 @@ func TestCheckContractStructInitIndexAccess(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` - pub contract Foo { - pub let x: S + access(all) contract Foo { + access(all) let x: S - pub struct S { + access(all) struct S { %s %s y: [Int] init() { self.y = [3] @@ -525,8 +525,8 @@ func TestCheckArrayUpdateMethodCall(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` - pub contract C { - pub %s Foo { + access(all) contract C { + access(all) %s Foo { %s %s x: [Int] init() { @@ -534,7 +534,7 @@ func TestCheckArrayUpdateMethodCall(t *testing.T) { } } - pub fun bar() { + access(all) fun bar() { let foo %s Foo() foo.x%s %s @@ -614,8 +614,8 @@ func TestCheckDictionaryUpdateMethodCall(t *testing.T) { _, err := ParseAndCheck(t, fmt.Sprintf(` - pub contract C { - pub %s Foo { + access(all) contract C { + access(all) %s Foo { %s %s x: {Int: Int} init() { @@ -623,7 +623,7 @@ func TestCheckDictionaryUpdateMethodCall(t *testing.T) { } } - pub fun bar() { + access(all) fun bar() { let foo %s Foo() foo.x%s %s @@ -653,92 +653,25 @@ func TestCheckDictionaryUpdateMethodCall(t *testing.T) { } } -func TestCheckPubSetAccessModifier(t *testing.T) { - - t.Parallel() - t.Run("pub set dict", func(t *testing.T) { - - t.Parallel() - - _, err := ParseAndCheck(t, - ` - pub contract C { - pub struct Foo { - access(all) var x: {Int: Int} - - init() { - self.x = {3: 3} - } - } - - pub fun bar() { - let foo = Foo() - foo.x[0] = 3 - } - } - `, - ) - require.NoError(t, err) - - }) -} - -func TestCheckPubSetNestedAccessModifier(t *testing.T) { - - t.Parallel() - t.Run("pub set nested", func(t *testing.T) { - - t.Parallel() - - _, err := ParseAndCheck(t, - ` - pub contract C { - pub struct Bar { - pub let foo: Foo - init() { - self.foo = Foo() - } - } - - pub struct Foo { - access(all) var x: [Int] - - init() { - self.x = [3] - } - } - - pub fun bar() { - let bar = Bar() - bar.foo.x[0] = 3 - } - } - `, - ) - require.NoError(t, err) - - }) -} - func TestCheckSelfContainingStruct(t *testing.T) { t.Parallel() - t.Run("pub let", func(t *testing.T) { + t.Run("access(all) let", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub contract C { - pub struct Foo { - pub let x: {Int: Int} + access(all) contract C { + access(all) struct Foo { + access(all) let x: {Int: Int} init() { self.x = {3: 3} } - pub fun bar() { + access(all) fun bar() { let foo = Foo() foo.x[0] = 3 } @@ -755,26 +688,26 @@ func TestCheckMutationThroughReference(t *testing.T) { t.Parallel() - t.Run("pub let", func(t *testing.T) { + t.Run("access(all) let", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub fun main() { + access(all) fun main() { let foo = Foo() foo.ref.arr.append("y") } - pub struct Foo { - pub let ref: &Bar + access(all) struct Foo { + access(all) let ref: &Bar init() { self.ref = &Bar() as &Bar } } - pub struct Bar { - pub let arr: [String] + access(all) struct Bar { + access(all) let arr: [String] init() { self.arr = ["x"] } @@ -791,27 +724,27 @@ func TestCheckMutationThroughInnerReference(t *testing.T) { t.Parallel() - t.Run("pub let", func(t *testing.T) { + t.Run("access(all) let", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub fun main() { + access(all) fun main() { let foo = Foo() var arrayRef = &foo.ref.arr as &[String] arrayRef[0] = "y" } - pub struct Foo { - pub let ref: &Bar + access(all) struct Foo { + access(all) let ref: &Bar init() { self.ref = &Bar() as &Bar } } - pub struct Bar { - pub let arr: [String] + access(all) struct Bar { + access(all) let arr: [String] init() { self.arr = ["x"] } @@ -826,32 +759,32 @@ func TestCheckMutationThroughAccess(t *testing.T) { t.Parallel() - t.Run("pub let", func(t *testing.T) { + t.Run("access(all) let", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub contract C { - pub struct Foo { - pub let arr: [Int] + access(all) contract C { + access(all) struct Foo { + access(all) let arr: [Int] init() { self.arr = [3] } } - priv let foo : Foo + access(self) let foo : Foo init() { self.foo = Foo() } - pub fun getFoo(): Foo { + access(all) fun getFoo(): Foo { return self.foo } } - pub fun main() { + access(all) fun main() { let a = C.getFoo() a.arr.append(0) // a.arr is now [3, 0] } diff --git a/runtime/tests/checker/function_test.go b/runtime/tests/checker/function_test.go index f800276add..90ade5eba3 100644 --- a/runtime/tests/checker/function_test.go +++ b/runtime/tests/checker/function_test.go @@ -132,22 +132,11 @@ func TestCheckFunctionAccess(t *testing.T) { t.Parallel() - _, err := ParseAndCheck(t, ` - pub fun test() {} - `) - - require.NoError(t, err) -} - -func TestCheckInvalidFunctionAccess(t *testing.T) { - - t.Parallel() - _, err := ParseAndCheck(t, ` access(all) fun test() {} `) - expectInvalidAccessModifierError(t, err) + require.NoError(t, err) } func TestCheckReturnWithoutExpression(t *testing.T) { @@ -465,14 +454,14 @@ func TestCheckResultVariable(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub resource R { - pub let id: UInt64 + access(all) resource R { + access(all) let id: UInt64 init() { self.id = 1 } } - pub fun main(): @R { + access(all) fun main(): @R { post { result.id == 1234: "Invalid id" } @@ -487,14 +476,14 @@ func TestCheckResultVariable(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub resource R { - pub let id: UInt64 + access(all) resource R { + access(all) let id: UInt64 init() { self.id = 1 } } - pub fun main(): @R? { + access(all) fun main(): @R? { post { result!.id == 1234: "invalid id" } diff --git a/runtime/tests/checker/import_test.go b/runtime/tests/checker/import_test.go index d5e2d4db98..b012968957 100644 --- a/runtime/tests/checker/import_test.go +++ b/runtime/tests/checker/import_test.go @@ -52,8 +52,8 @@ func TestCheckRepeatedImport(t *testing.T) { importedChecker, err := ParseAndCheckWithOptions(t, ` - pub let x = 1 - pub let y = 2 + access(all) let x = 1 + access(all) let y = 2 `, ParseAndCheckOptions{ Location: utils.ImportedLocation, @@ -87,11 +87,11 @@ func TestCheckRepeatedImportResolution(t *testing.T) { importedCheckerX, err := ParseAndCheckWithOptions(t, ` - pub fun test(): Int { + access(all) fun test(): Int { return 1 } - pub let x = test() + access(all) let x = test() `, ParseAndCheckOptions{ Location: common.AddressLocation{ @@ -104,11 +104,11 @@ func TestCheckRepeatedImportResolution(t *testing.T) { importedCheckerY, err := ParseAndCheckWithOptions(t, ` - pub fun test(): Int { + access(all) fun test(): Int { return 2 } - pub let y = test() + access(all) let y = test() `, ParseAndCheckOptions{ Location: common.AddressLocation{ @@ -166,7 +166,7 @@ func TestCheckInvalidRepeatedImport(t *testing.T) { importedChecker, err := ParseAndCheckWithOptions(t, ` - pub let x = 1 + access(all) let x = 1 `, ParseAndCheckOptions{ Location: utils.ImportedLocation, @@ -204,11 +204,11 @@ func TestCheckImportResolutionSplit(t *testing.T) { importedCheckerX, err := ParseAndCheckWithOptions(t, ` - pub fun test(): Int { + access(all) fun test(): Int { return 1 } - pub let x = test() + access(all) let x = test() `, ParseAndCheckOptions{ Location: common.AddressLocation{ @@ -221,11 +221,11 @@ func TestCheckImportResolutionSplit(t *testing.T) { importedCheckerY, err := ParseAndCheckWithOptions(t, ` - pub fun test(): Int { + access(all) fun test(): Int { return 2 } - pub let y = test() + access(all) let y = test() `, ParseAndCheckOptions{ Location: common.AddressLocation{ @@ -282,7 +282,7 @@ func TestCheckImportAll(t *testing.T) { importedChecker, err := ParseAndCheckWithOptions(t, ` - pub fun answer(): Int { + access(all) fun answer(): Int { return 42 } `, @@ -297,7 +297,7 @@ func TestCheckImportAll(t *testing.T) { ` import "imported" - pub let x = answer() + access(all) let x = answer() `, ParseAndCheckOptions{ Config: &sema.Config{ @@ -319,7 +319,7 @@ func TestCheckInvalidImportUnexported(t *testing.T) { importedChecker, err := ParseAndCheckWithOptions(t, ` - pub let x = 1 + access(all) let x = 1 `, ParseAndCheckOptions{ Location: utils.ImportedLocation, @@ -332,7 +332,7 @@ func TestCheckInvalidImportUnexported(t *testing.T) { ` import answer from "imported" - pub let x = answer() + access(all) let x = answer() `, ParseAndCheckOptions{ Config: &sema.Config{ @@ -356,11 +356,11 @@ func TestCheckImportSome(t *testing.T) { importedChecker, err := ParseAndCheckWithOptions(t, ` - pub fun answer(): Int { + access(all) fun answer(): Int { return 42 } - pub let x = 1 + access(all) let x = 1 `, ParseAndCheckOptions{ Location: utils.ImportedLocation, @@ -373,7 +373,7 @@ func TestCheckImportSome(t *testing.T) { ` import answer from "imported" - pub let x = answer() + access(all) let x = answer() `, ParseAndCheckOptions{ Config: &sema.Config{ @@ -438,9 +438,9 @@ func TestCheckImportTypes(t *testing.T) { importedChecker, err := ParseAndCheckWithOptions(t, fmt.Sprintf( ` - pub %[1]s Test %[2]s + access(all) %[1]s Test %[2]s - pub %[1]s interface TestInterface %[2]s + access(all) %[1]s interface TestInterface %[2]s `, compositeKind.Keyword(), body, @@ -455,7 +455,7 @@ func TestCheckImportTypes(t *testing.T) { var useCode string if compositeKind != common.CompositeKindContract { useCode = fmt.Sprintf( - `pub let x: %[1]sTest %[2]s %[3]s Test%[4]s`, + `access(all) let x: %[1]sTest %[2]s %[3]s Test%[4]s`, compositeKind.Annotation(), compositeKind.TransferOperator(), compositeKind.ConstructionKeyword(), @@ -468,7 +468,7 @@ func TestCheckImportTypes(t *testing.T) { ` import "imported" - pub %[1]s TestImpl: TestInterface {} + access(all) %[1]s TestImpl: TestInterface {} %[2]s `, @@ -575,7 +575,7 @@ func TestCheckInvalidImportCycleTwoLocations(t *testing.T) { const codeEven = ` import odd from "odd" - pub fun even(_ n: Int): Bool { + access(all) fun even(_ n: Int): Bool { if n == 0 { return true } @@ -588,7 +588,7 @@ func TestCheckInvalidImportCycleTwoLocations(t *testing.T) { const codeOdd = ` import even from "even" - pub fun odd(_ n: Int): Bool { + access(all) fun odd(_ n: Int): Bool { if n == 0 { return false } diff --git a/runtime/tests/checker/interface_test.go b/runtime/tests/checker/interface_test.go index dc5c400325..a7f8f97922 100644 --- a/runtime/tests/checker/interface_test.go +++ b/runtime/tests/checker/interface_test.go @@ -288,9 +288,9 @@ func TestCheckInterfaceUse(t *testing.T) { _, err := ParseAndCheckWithPanic(t, fmt.Sprintf( ` - pub %[1]s interface Test %[2]s + access(all) %[1]s interface Test %[2]s - pub let test: %[3]s%[4]s %[5]s panic("") + access(all) let test: %[3]s%[4]s %[5]s panic("") `, kind.Keyword(), body, @@ -880,7 +880,7 @@ func TestCheckInvalidInterfaceConformanceFunctionPrivateAccessModifier(t *testin } %[1]s TestImpl: Test { - priv fun test(): Int { + access(self) fun test(): Int { return 1 } } @@ -990,7 +990,7 @@ func TestCheckInvalidInterfaceConformanceFieldPrivateAccessModifier(t *testing.T } %[1]s TestImpl: Test { - priv var x: Int + access(self) var x: Int init(x: Int) { self.x = x @@ -1023,7 +1023,7 @@ func TestCheckInvalidInterfaceConformanceFieldMismatchAccessModifierMoreRestrict } %[1]s TestImpl: Test { - pub var x: Int + access(account) var x: Int init(x: Int) { self.x = x @@ -1052,7 +1052,7 @@ func TestCheckInvalidInterfaceConformanceFunctionMismatchAccessModifierMoreRestr fmt.Sprintf( ` %[1]s interface Test { - pub fun x() + access(all) fun x() } %[1]s TestImpl: Test { @@ -1081,7 +1081,7 @@ func TestCheckInterfaceConformanceFieldMorePermissiveAccessModifier(t *testing.T fmt.Sprintf( ` %[1]s interface Test { - pub x: Int + access(all) x: Int } %[1]s TestImpl: Test { diff --git a/runtime/tests/checker/invocation_test.go b/runtime/tests/checker/invocation_test.go index 8b0bc192cc..f841239f76 100644 --- a/runtime/tests/checker/invocation_test.go +++ b/runtime/tests/checker/invocation_test.go @@ -332,7 +332,7 @@ func TestCheckInvocationWithOnlyVarargs(t *testing.T) { _, err := ParseAndCheckWithOptions(t, ` - pub fun test() { + access(all) fun test() { foo(1) } `, diff --git a/runtime/tests/checker/never_test.go b/runtime/tests/checker/never_test.go index f1a75dc8eb..ef5cfc2a33 100644 --- a/runtime/tests/checker/never_test.go +++ b/runtime/tests/checker/never_test.go @@ -36,7 +36,7 @@ func TestCheckNever(t *testing.T) { _, err := ParseAndCheckWithPanic(t, ` - pub fun test(): Int { + access(all) fun test(): Int { return panic("XXX") } `, @@ -50,7 +50,7 @@ func TestCheckNever(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { var x: Never = 5 } `, @@ -70,7 +70,7 @@ func TestCheckNever(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { var x: Never = "c" } `, @@ -90,7 +90,7 @@ func TestCheckNever(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { var x: Never = "hello" } `, @@ -110,7 +110,7 @@ func TestCheckNever(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test(a: Never, b: Never) { + access(all) fun test(a: Never, b: Never) { var x: Int = a + b } `, @@ -129,7 +129,7 @@ func TestCheckNever(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test(a: Never) { + access(all) fun test(a: Never) { var x: Bool = !a } `, @@ -148,7 +148,7 @@ func TestCheckNever(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test(a: Never?) { + access(all) fun test(a: Never?) { var x: Int = a ?? 4 } `, diff --git a/runtime/tests/checker/nft_test.go b/runtime/tests/checker/nft_test.go index 2e09b806ef..d1a92cd573 100644 --- a/runtime/tests/checker/nft_test.go +++ b/runtime/tests/checker/nft_test.go @@ -34,39 +34,39 @@ const realNonFungibleTokenContractInterface = ` // The main NFT contract interface. Other NFT contracts will // import and implement this interface // -pub contract interface NonFungibleToken { +access(all) contract interface NonFungibleToken { // The total number of tokens of this type in existence - pub var totalSupply: UInt64 + access(all) var totalSupply: UInt64 // Event that emitted when the NFT contract is initialized // - pub event ContractInitialized() + access(all) event ContractInitialized() // Event that is emitted when a token is withdrawn, // indicating the owner of the collection that it was withdrawn from. // // If the collection is not in an account's storage, from will be nil. // - pub event Withdraw(id: UInt64, from: Address?) + access(all) event Withdraw(id: UInt64, from: Address?) // Event that emitted when a token is deposited to a collection. // // It indicates the owner of the collection that it was deposited to. // - pub event Deposit(id: UInt64, to: Address?) + access(all) event Deposit(id: UInt64, to: Address?) // Interface that the NFTs have to conform to // - pub resource interface INFT { + access(all) resource interface INFT { // The unique ID that each NFT has - pub let id: UInt64 + access(all) let id: UInt64 } // Requirement that all conforming NFT smart contracts have // to define a resource called NFT that conforms to INFT - pub resource NFT: INFT { - pub let id: UInt64 + access(all) resource NFT: INFT { + access(all) let id: UInt64 } // entitles references to withdraw @@ -74,7 +74,7 @@ pub contract interface NonFungibleToken { // Interface to mediate withdraws from the Collection // - pub resource interface Provider { + access(all) resource interface Provider { // withdraw removes an NFT from the collection and moves it to the caller access(Withdrawable) fun withdraw(withdrawID: UInt64): @NFT { post { @@ -85,42 +85,42 @@ pub contract interface NonFungibleToken { // Interface to mediate deposits to the Collection // - pub resource interface Receiver { + access(all) resource interface Receiver { // deposit takes an NFT as an argument and adds it to the Collection // - pub fun deposit(token: @NFT) + access(all) fun deposit(token: @NFT) } // Interface that an account would commonly // publish for their collection - pub resource interface CollectionPublic { - pub fun deposit(token: @NFT) - pub fun getIDs(): [UInt64] - pub fun borrowNFT(id: UInt64): &NFT + access(all) resource interface CollectionPublic { + access(all) fun deposit(token: @NFT) + access(all) fun getIDs(): [UInt64] + access(all) fun borrowNFT(id: UInt64): &NFT } // Requirement for the the concrete resource type // to be declared in the implementing contract // - pub resource Collection: Provider, Receiver, CollectionPublic { + access(all) resource Collection: Provider, Receiver, CollectionPublic { // Dictionary to hold the NFTs in the Collection - pub var ownedNFTs: @{UInt64: NFT} + access(all) var ownedNFTs: @{UInt64: NFT} // withdraw removes an NFT from the collection and moves it to the caller access(Withdrawable) fun withdraw(withdrawID: UInt64): @NFT // deposit takes a NFT and adds it to the collections dictionary // and adds the ID to the id array - pub fun deposit(token: @NFT) + access(all) fun deposit(token: @NFT) // getIDs returns an array of the IDs that are in the collection - pub fun getIDs(): [UInt64] + access(all) fun getIDs(): [UInt64] // Returns a borrowed reference to an NFT in the collection // so that the caller can read data and call methods from it - pub fun borrowNFT(id: UInt64): &NFT { + access(all) fun borrowNFT(id: UInt64): &NFT { pre { self.ownedNFTs[id] != nil: "NFT does not exist in the collection!" } @@ -129,7 +129,7 @@ pub contract interface NonFungibleToken { // createEmptyCollection creates an empty Collection // and returns it to the caller so that they can own NFTs - pub fun createEmptyCollection(): @Collection { + access(all) fun createEmptyCollection(): @Collection { post { result.ownedNFTs.length == 0: "The created collection must be empty!" } @@ -141,42 +141,42 @@ const topShotContract = ` import NonFungibleToken from 0x1 -pub contract TopShot: NonFungibleToken { +access(all) contract TopShot: NonFungibleToken { // ----------------------------------------------------------------------- // TopShot contract Events // ----------------------------------------------------------------------- // Emitted when the TopShot contract is created - pub event ContractInitialized() + access(all) event ContractInitialized() // Emitted when a new Play struct is created - pub event PlayCreated(id: UInt32, metadata: {String:String}) + access(all) event PlayCreated(id: UInt32, metadata: {String:String}) // Emitted when a new series has been triggered by an admin - pub event NewSeriesStarted(newCurrentSeries: UInt32) + access(all) event NewSeriesStarted(newCurrentSeries: UInt32) // Events for Set-Related actions // // Emitted when a new Set is created - pub event SetCreated(setID: UInt32, series: UInt32) + access(all) event SetCreated(setID: UInt32, series: UInt32) // Emitted when a new Play is added to a Set - pub event PlayAddedToSet(setID: UInt32, playID: UInt32) + access(all) event PlayAddedToSet(setID: UInt32, playID: UInt32) // Emitted when a Play is retired from a Set and cannot be used to mint - pub event PlayRetiredFromSet(setID: UInt32, playID: UInt32, numMoments: UInt32) + access(all) event PlayRetiredFromSet(setID: UInt32, playID: UInt32, numMoments: UInt32) // Emitted when a Set is locked, meaning Plays cannot be added - pub event SetLocked(setID: UInt32) + access(all) event SetLocked(setID: UInt32) // Emitted when a Moment is minted from a Set - pub event MomentMinted(momentID: UInt64, playID: UInt32, setID: UInt32, serialNumber: UInt32) + access(all) event MomentMinted(momentID: UInt64, playID: UInt32, setID: UInt32, serialNumber: UInt32) // Events for Collection-related actions // // Emitted when a moment is withdrawn from a Collection - pub event Withdraw(id: UInt64, from: Address?) + access(all) event Withdraw(id: UInt64, from: Address?) // Emitted when a moment is deposited into a Collection - pub event Deposit(id: UInt64, to: Address?) + access(all) event Deposit(id: UInt64, to: Address?) // Emitted when a Moment is destroyed - pub event MomentDestroyed(id: UInt64) + access(all) event MomentDestroyed(id: UInt64) // ----------------------------------------------------------------------- // TopShot contract-level fields. @@ -186,7 +186,7 @@ pub contract TopShot: NonFungibleToken { // Series that this Set belongs to. // Series is a concept that indicates a group of Sets through time. // Many Sets can exist at a time, but only one series. - pub var currentSeries: UInt32 + access(all) var currentSeries: UInt32 // Variable size dictionary of Play structs access(self) var playDatas: {UInt32: Play} @@ -200,17 +200,17 @@ pub contract TopShot: NonFungibleToken { // The ID that is used to create Plays. // Every time a Play is created, playID is assigne // to the new Play's ID and then is incremented by 1. - pub var nextPlayID: UInt32 + access(all) var nextPlayID: UInt32 // The ID that is used to create Sets. Every time a Set is created // setID is assigned to the new set's ID and then is incremented by 1. - pub var nextSetID: UInt32 + access(all) var nextSetID: UInt32 // The total number of Top shot Moment NFTs that have been created // Because NFTs can be destroyed, it doesn't necessarily mean that this // reflects the total number of NFTs in existence, just the number that // have been minted to date. Also used as global moment IDs for minting. - pub var totalSupply: UInt64 + access(all) var totalSupply: UInt64 // ----------------------------------------------------------------------- // TopShot contract-level Composite Type definitions @@ -230,16 +230,16 @@ pub contract TopShot: NonFungibleToken { // its metadata. The plays are publicly accessible, so anyone can // read the metadata associated with a specific play ID // - pub struct Play { + access(all) struct Play { // The unique ID for the Play - pub let playID: UInt32 + access(all) let playID: UInt32 // Stores all the metadata about the play as a string mapping // This is not the long term way NFT metadata will be stored. It's a temporary // construct while we figure out a better way to do metadata. // - pub let metadata: {String: String} + access(all) let metadata: {String: String} init(metadata: {String: String}) { pre { @@ -265,19 +265,19 @@ pub contract TopShot: NonFungibleToken { // at the end of the contract. Only the admin has the ability // to modify any data in the private Set resource. // - pub struct SetData { + access(all) struct SetData { // Unique ID for the Set - pub let setID: UInt32 + access(all) let setID: UInt32 // Name of the Set // ex. "Times when the Toronto Raptors choked in the playoffs" - pub let name: String + access(all) let name: String // Series that this Set belongs to. // Series is a concept that indicates a group of Sets through time. // Many Sets can exist at a time, but only one series. - pub let series: UInt32 + access(all) let series: UInt32 init(name: String) { pre { @@ -313,20 +313,20 @@ pub contract TopShot: NonFungibleToken { // // If retireAll() and lock() are called back-to-back, // the Set is closed off forever and nothing more can be done with it. - pub resource Set { + access(all) resource Set { // Unique ID for the set - pub let setID: UInt32 + access(all) let setID: UInt32 // Array of plays that are a part of this set. // When a play is added to the set, its ID gets appended here. // The ID does not get removed from this array when a Play is retired. - pub var plays: [UInt32] + access(all) var plays: [UInt32] // Map of Play IDs that Indicates if a Play in this Set can be minted. // When a Play is added to a Set, it is mapped to false (not retired). // When a Play is retired, this is set to true and cannot be changed. - pub var retired: {UInt32: Bool} + access(all) var retired: {UInt32: Bool} // Indicates if the Set is currently locked. // When a Set is created, it is unlocked @@ -337,13 +337,13 @@ pub contract TopShot: NonFungibleToken { // If a Set is locked, Plays cannot be added, but // Moments can still be minted from Plays // that exist in the Set. - pub var locked: Bool + access(all) var locked: Bool // Mapping of Play IDs that indicates the number of Moments // that have been minted for specific Plays in this Set. // When a Moment is minted, this value is stored in the Moment to // show its place in the Set, eg. 13 of 60. - pub var numberMintedPerPlay: {UInt32: UInt32} + access(all) var numberMintedPerPlay: {UInt32: UInt32} init(name: String) { self.setID = TopShot.nextSetID @@ -365,7 +365,7 @@ pub contract TopShot: NonFungibleToken { // The Set needs to be not locked // The Play can't have already been added to the Set // - pub fun addPlay(playID: UInt32) { + access(all) fun addPlay(playID: UInt32) { pre { TopShot.playDatas[playID] != nil: "Cannot add the Play to Set: Play doesn't exist." !self.locked: "Cannot add the play to the Set after the set has been locked." @@ -389,7 +389,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: playIDs: The IDs of the Plays that are being added // as an array // - pub fun addPlays(playIDs: [UInt32]) { + access(all) fun addPlays(playIDs: [UInt32]) { for play in playIDs { self.addPlay(playID: play) } @@ -402,7 +402,7 @@ pub contract TopShot: NonFungibleToken { // Pre-Conditions: // The Play is part of the Set and not retired (available for minting). // - pub fun retirePlay(playID: UInt32) { + access(all) fun retirePlay(playID: UInt32) { pre { self.retired[playID] != nil: "Cannot retire the Play: Play doesn't exist in this set!" } @@ -417,7 +417,7 @@ pub contract TopShot: NonFungibleToken { // retireAll retires all the plays in the Set // Afterwards, none of the retired Plays will be able to mint new Moments // - pub fun retireAll() { + access(all) fun retireAll() { for play in self.plays { self.retirePlay(playID: play) } @@ -427,7 +427,7 @@ pub contract TopShot: NonFungibleToken { // // Pre-Conditions: // The Set should not be locked - pub fun lock() { + access(all) fun lock() { if !self.locked { self.locked = true emit SetLocked(setID: self.setID) @@ -443,7 +443,7 @@ pub contract TopShot: NonFungibleToken { // // Returns: The NFT that was minted // - pub fun mintMoment(playID: UInt32): @NFT { + access(all) fun mintMoment(playID: UInt32): @NFT { pre { self.retired[playID] != nil: "Cannot mint the moment: This play doesn't exist." !self.retired[playID]!: "Cannot mint the moment from this play: This play has been retired." @@ -472,7 +472,7 @@ pub contract TopShot: NonFungibleToken { // // Returns: Collection object that contains all the Moments that were minted // - pub fun batchMintMoment(playID: UInt32, quantity: UInt64): @Collection { + access(all) fun batchMintMoment(playID: UInt32, quantity: UInt64): @Collection { let newCollection <- create Collection() var i: UInt64 = 0 @@ -485,17 +485,17 @@ pub contract TopShot: NonFungibleToken { } } - pub struct MomentData { + access(all) struct MomentData { // The ID of the Set that the Moment comes from - pub let setID: UInt32 + access(all) let setID: UInt32 // The ID of the Play that the Moment references - pub let playID: UInt32 + access(all) let playID: UInt32 // The place in the edition that this Moment was minted // Otherwise know as the serial number - pub let serialNumber: UInt32 + access(all) let serialNumber: UInt32 init(setID: UInt32, playID: UInt32, serialNumber: UInt32) { self.setID = setID @@ -507,13 +507,13 @@ pub contract TopShot: NonFungibleToken { // The resource that represents the Moment NFTs // - pub resource NFT: NonFungibleToken.INFT { + access(all) resource NFT: NonFungibleToken.INFT { // Global unique moment ID - pub let id: UInt64 + access(all) let id: UInt64 // Struct of Moment metadata - pub let data: MomentData + access(all) let data: MomentData init(serialNumber: UInt32, playID: UInt32, setID: UInt32) { // Increment the global Moment IDs @@ -538,7 +538,7 @@ pub contract TopShot: NonFungibleToken { // allows the owner to perform important functions to modify the // various aspects of the Plays, Sets, and Moments // - pub resource Admin { + access(all) resource Admin { // createPlay creates a new Play struct // and stores it in the Plays dictionary in the TopShot smart contract @@ -549,7 +549,7 @@ pub contract TopShot: NonFungibleToken { // // Returns: the ID of the new Play object // - pub fun createPlay(metadata: {String: String}): UInt32 { + access(all) fun createPlay(metadata: {String: String}): UInt32 { // Create the new Play var newPlay = Play(metadata: metadata) let newID = newPlay.playID @@ -565,7 +565,7 @@ pub contract TopShot: NonFungibleToken { // // Parameters: name: The name of the Set // - pub fun createSet(name: String) { + access(all) fun createSet(name: String) { // Create the new Set var newSet <- create Set(name: name) @@ -582,7 +582,7 @@ pub contract TopShot: NonFungibleToken { // Returns: A reference to the Set with all of the fields // and methods exposed // - pub fun borrowSet(setID: UInt32): &Set { + access(all) fun borrowSet(setID: UInt32): &Set { pre { TopShot.sets[setID] != nil: "Cannot borrow Set: The Set doesn't exist" } @@ -598,7 +598,7 @@ pub contract TopShot: NonFungibleToken { // // Returns: The new series number // - pub fun startNewSeries(): UInt32 { + access(all) fun startNewSeries(): UInt32 { // End the current series and start a new one // by incrementing the TopShot series number TopShot.currentSeries = TopShot.currentSeries + UInt32(1) @@ -610,7 +610,7 @@ pub contract TopShot: NonFungibleToken { // createNewAdmin creates a new Admin resource // - pub fun createNewAdmin(): @Admin { + access(all) fun createNewAdmin(): @Admin { return <-create Admin() } } @@ -618,12 +618,12 @@ pub contract TopShot: NonFungibleToken { // This is the interface that users can cast their Moment Collection as // to allow others to deposit Moments into their Collection. It also allows for reading // the IDs of Moments in the Collection. - pub resource interface MomentCollectionPublic { - pub fun deposit(token: @NonFungibleToken.NFT) - pub fun batchDeposit(tokens: @NonFungibleToken.Collection) - pub fun getIDs(): [UInt64] - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT - pub fun borrowMoment(id: UInt64): &TopShot.NFT? { + access(all) resource interface MomentCollectionPublic { + access(all) fun deposit(token: @NonFungibleToken.NFT) + access(all) fun batchDeposit(tokens: @NonFungibleToken.Collection) + access(all) fun getIDs(): [UInt64] + access(all) fun borrowNFT(id: UInt64): &NonFungibleToken.NFT + access(all) fun borrowMoment(id: UInt64): &TopShot.NFT? { // If the result isn't nil, the id of the returned reference // should be the same as the argument to the function post { @@ -636,10 +636,10 @@ pub contract TopShot: NonFungibleToken { // Collection is a resource that every user who owns NFTs // will store in their account to manage their NFTS // - pub resource Collection: MomentCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { + access(all) resource Collection: MomentCollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic { // Dictionary of Moment conforming tokens // NFT is a resource type with a UInt64 ID field - pub var ownedNFTs: @{UInt64: NonFungibleToken.NFT} + access(all) var ownedNFTs: @{UInt64: NonFungibleToken.NFT} init() { self.ownedNFTs <- {} @@ -670,7 +670,7 @@ pub contract TopShot: NonFungibleToken { // Returns: @NonFungibleToken.Collection: A collection that contains // the withdrawn moments // - pub fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { + access(all) fun batchWithdraw(ids: [UInt64]): @NonFungibleToken.Collection { // Create a new empty Collection var batchCollection <- create Collection() @@ -687,7 +687,7 @@ pub contract TopShot: NonFungibleToken { // // Parameters: token: the NFT to be deposited in the collection // - pub fun deposit(token: @NonFungibleToken.NFT) { + access(all) fun deposit(token: @NonFungibleToken.NFT) { // Cast the deposited token as a TopShot NFT to make sure // it is the correct type @@ -711,7 +711,7 @@ pub contract TopShot: NonFungibleToken { // batchDeposit takes a Collection object as an argument // and deposits each contained NFT into this Collection - pub fun batchDeposit(tokens: @NonFungibleToken.Collection) { + access(all) fun batchDeposit(tokens: @NonFungibleToken.Collection) { // Get an array of the IDs to be deposited let keys = tokens.getIDs() @@ -726,7 +726,7 @@ pub contract TopShot: NonFungibleToken { } // getIDs returns an array of the IDs that are in the Collection - pub fun getIDs(): [UInt64] { + access(all) fun getIDs(): [UInt64] { return self.ownedNFTs.keys } @@ -741,7 +741,7 @@ pub contract TopShot: NonFungibleToken { // not any topshot specific data. Please use borrowMoment to // read Moment data. // - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { + access(all) fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { return (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! } @@ -755,7 +755,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: id: The ID of the NFT to get the reference for // // Returns: A reference to the NFT - pub fun borrowMoment(id: UInt64): &TopShot.NFT? { + access(all) fun borrowMoment(id: UInt64): &TopShot.NFT? { if self.ownedNFTs[id] != nil { let ref = (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! return ref as! &TopShot.NFT @@ -783,14 +783,14 @@ pub contract TopShot: NonFungibleToken { // Once they have a Collection in their storage, they are able to receive // Moments in transactions. // - pub fun createEmptyCollection(): @NonFungibleToken.Collection { + access(all) fun createEmptyCollection(): @NonFungibleToken.Collection { return <-create TopShot.Collection() } // getAllPlays returns all the plays in topshot // // Returns: An array of all the plays that have been created - pub fun getAllPlays(): [TopShot.Play] { + access(all) fun getAllPlays(): [TopShot.Play] { return TopShot.playDatas.values } @@ -799,7 +799,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: playID: The id of the Play that is being searched // // Returns: The metadata as a String to String mapping optional - pub fun getPlayMetaData(playID: UInt32): {String: String}? { + access(all) fun getPlayMetaData(playID: UInt32): {String: String}? { return self.playDatas[playID]?.metadata } @@ -812,7 +812,7 @@ pub contract TopShot: NonFungibleToken { // field: The field to search for // // Returns: The metadata field as a String Optional - pub fun getPlayMetaDataByField(playID: UInt32, field: String): String? { + access(all) fun getPlayMetaDataByField(playID: UInt32, field: String): String? { // Don't force a revert if the playID or field is invalid if let play = TopShot.playDatas[playID] { return play.metadata[field] @@ -827,7 +827,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: setID: The id of the Set that is being searched // // Returns: The name of the Set - pub fun getSetName(setID: UInt32): String? { + access(all) fun getSetName(setID: UInt32): String? { // Don't force a revert if the setID is invalid return TopShot.setDatas[setID]?.name } @@ -838,7 +838,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: setID: The id of the Set that is being searched // // Returns: The series that the Set belongs to - pub fun getSetSeries(setID: UInt32): UInt32? { + access(all) fun getSetSeries(setID: UInt32): UInt32? { // Don't force a revert if the setID is invalid return TopShot.setDatas[setID]?.series } @@ -849,7 +849,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: setName: The name of the Set that is being searched // // Returns: An array of the IDs of the Set if it exists, or nil if doesn't - pub fun getSetIDsByName(setName: String): [UInt32]? { + access(all) fun getSetIDsByName(setName: String): [UInt32]? { var setIDs: [UInt32] = [] // Iterate through all the setDatas and search for the name @@ -874,7 +874,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: setID: The id of the Set that is being searched // // Returns: An array of Play IDs - pub fun getPlaysInSet(setID: UInt32): [UInt32]? { + access(all) fun getPlaysInSet(setID: UInt32): [UInt32]? { // Don't force a revert if the setID is invalid return TopShot.sets[setID]?.plays } @@ -888,7 +888,7 @@ pub contract TopShot: NonFungibleToken { // playID: The id of the Play that is being searched // // Returns: Boolean indicating if the edition is retired or not - pub fun isEditionRetired(setID: UInt32, playID: UInt32): Bool? { + access(all) fun isEditionRetired(setID: UInt32, playID: UInt32): Bool? { // Don't force a revert if the set or play ID is invalid // Remove the set from the dictionary to get its field if let setToRead <- TopShot.sets.remove(key: setID) { @@ -916,7 +916,7 @@ pub contract TopShot: NonFungibleToken { // Parameters: setID: The id of the Set that is being searched // // Returns: Boolean indicating if the Set is locked or not - pub fun isSetLocked(setID: UInt32): Bool? { + access(all) fun isSetLocked(setID: UInt32): Bool? { // Don't force a revert if the setID is invalid return TopShot.sets[setID]?.locked } @@ -929,7 +929,7 @@ pub contract TopShot: NonFungibleToken { // // Returns: The total number of Moments // that have been minted from an edition - pub fun getNumMomentsInEdition(setID: UInt32, playID: UInt32): UInt32? { + access(all) fun getNumMomentsInEdition(setID: UInt32, playID: UInt32): UInt32? { // Don't force a revert if the Set or play ID is invalid // Remove the Set from the dictionary to get its field if let setToRead <- TopShot.sets.remove(key: setID) { diff --git a/runtime/tests/checker/nil_coalescing_test.go b/runtime/tests/checker/nil_coalescing_test.go index 729569cc9f..98105b74fe 100644 --- a/runtime/tests/checker/nil_coalescing_test.go +++ b/runtime/tests/checker/nil_coalescing_test.go @@ -217,8 +217,8 @@ func TestCheckNilCoalescingWithNever(t *testing.T) { _, err := ParseAndCheckWithPanic(t, ` - pub let x: Int? = nil - pub let y = x ?? panic("nope") + access(all) let x: Int? = nil + access(all) let y = x ?? panic("nope") `, ) diff --git a/runtime/tests/checker/predeclaredvalues_test.go b/runtime/tests/checker/predeclaredvalues_test.go index 1a48db36ba..cd69920f4f 100644 --- a/runtime/tests/checker/predeclaredvalues_test.go +++ b/runtime/tests/checker/predeclaredvalues_test.go @@ -45,7 +45,7 @@ func TestCheckPredeclaredValues(t *testing.T) { _, err := ParseAndCheckWithOptions(t, ` - pub fun test() { + access(all) fun test() { foo() } `, diff --git a/runtime/tests/checker/purity_test.go b/runtime/tests/checker/purity_test.go index 3ebca784d9..805a1ec2e0 100644 --- a/runtime/tests/checker/purity_test.go +++ b/runtime/tests/checker/purity_test.go @@ -560,8 +560,13 @@ func TestCheckPurityEnforcement(t *testing.T) { t.Run("struct external write", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub struct R { + access(all) struct R { access(all) var x: Int + + access(all) fun setX(_ x: Int) { + self.x = x + } + init(x: Int) { self.x = x } @@ -569,7 +574,7 @@ func TestCheckPurityEnforcement(t *testing.T) { let r = R(x: 0) view fun foo(){ - r.x = 3 + r.setX(3) } `) @@ -577,24 +582,23 @@ func TestCheckPurityEnforcement(t *testing.T) { assert.IsType(t, &sema.PurityError{}, errs[0]) assert.Equal(t, errs[0].(*sema.PurityError).Range, ast.Range{ - StartPos: ast.Position{Offset: 203, Line: 11, Column: 12}, - EndPos: ast.Position{Offset: 209, Line: 11, Column: 18}, + StartPos: ast.Position{Offset: 272, Line: 16, Column: 12}, + EndPos: ast.Position{Offset: 280, Line: 16, Column: 20}, }) }) t.Run("struct param write", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub struct R { + access(all) struct R { access(all) var x: Int init(x: Int) { self.x = x } - } - - view fun foo(_ r: R): R { - r.x = 3 - return r + view fun foo(_ r: R): R { + r.x = 3 + return r + } } `) @@ -604,20 +608,20 @@ func TestCheckPurityEnforcement(t *testing.T) { t.Run("struct param nested write", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub struct R { + access(all) struct R { access(all) var x: Int init(x: Int) { self.x = x } - } - - view fun foo(_ r: R): R { - if true { - while true { - r.x = 3 - } - } - return r + + access(all) view fun foo(_ r: R): R { + if true { + while true { + r.x = 3 + } + } + return r + } } `) @@ -716,10 +720,10 @@ func TestCheckPurityEnforcement(t *testing.T) { init(x: Int) { self.x = x } - } - - view fun foo(_ s: &S) { - s.x = 3 + + view fun foo(_ s: &S) { + s.x = 3 + } } `) @@ -727,8 +731,8 @@ func TestCheckPurityEnforcement(t *testing.T) { assert.IsType(t, &sema.PurityError{}, errs[0]) assert.Equal(t, errs[0].(*sema.PurityError).Range, ast.Range{ - StartPos: ast.Position{Offset: 183, Line: 10, Column: 12}, - EndPos: ast.Position{Offset: 189, Line: 10, Column: 18}, + StartPos: ast.Position{Offset: 155, Line: 9, Column: 4}, + EndPos: ast.Position{Offset: 161, Line: 9, Column: 10}, }) }) @@ -740,12 +744,10 @@ func TestCheckPurityEnforcement(t *testing.T) { init(_ x: Int) { self.x = x } - } - let s = [&S(0) as &S] - - view fun foo() { - s[0].x = 3 + access(all) view fun foo(_ s: [&S]) { + s[0].x = 3 + } } `) @@ -753,8 +755,8 @@ func TestCheckPurityEnforcement(t *testing.T) { assert.IsType(t, &sema.PurityError{}, errs[0]) assert.Equal(t, errs[0].(*sema.PurityError).Range, ast.Range{ - StartPos: ast.Position{Offset: 204, Line: 12, Column: 13}, - EndPos: ast.Position{Offset: 212, Line: 12, Column: 21}, + StartPos: ast.Position{Offset: 172, Line: 9, Column: 5}, + EndPos: ast.Position{Offset: 180, Line: 9, Column: 13}, }) }) @@ -778,8 +780,8 @@ func TestCheckPurityEnforcement(t *testing.T) { assert.IsType(t, &sema.NotDeclaredError{}, errs[0]) assert.IsType(t, &sema.PurityError{}, errs[1]) assert.Equal(t, errs[1].(*sema.PurityError).Range, ast.Range{ - StartPos: ast.Position{Offset: 168, Line: 10, Column: 12}, - EndPos: ast.Position{Offset: 174, Line: 10, Column: 18}, + StartPos: ast.Position{Offset: 171, Line: 10, Column: 12}, + EndPos: ast.Position{Offset: 177, Line: 10, Column: 18}, }) }) } @@ -788,16 +790,15 @@ func TestCheckResourceWritePurity(t *testing.T) { t.Run("resource param write", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub resource R { + access(all) resource R { access(all) var x: Int init(x: Int) { self.x = x } - } - - view fun foo(_ r: @R): @R { - r.x = 3 - return <-r + view fun foo(_ r: @R): @R { + r.x = 3 + return <-r + } } `) @@ -805,15 +806,15 @@ func TestCheckResourceWritePurity(t *testing.T) { assert.IsType(t, &sema.PurityError{}, errs[0]) assert.Equal(t, errs[0].(*sema.PurityError).Range, ast.Range{ - StartPos: ast.Position{Offset: 217, Line: 10, Column: 16}, - EndPos: ast.Position{Offset: 223, Line: 10, Column: 22}, + StartPos: ast.Position{Offset: 194, Line: 8, Column: 5}, + EndPos: ast.Position{Offset: 200, Line: 8, Column: 11}, }) }) t.Run("destroy", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub resource R {} + access(all) resource R {} view fun foo(_ r: @R){ destroy r @@ -824,28 +825,27 @@ func TestCheckResourceWritePurity(t *testing.T) { assert.IsType(t, &sema.PurityError{}, errs[0]) assert.Equal(t, errs[0].(*sema.PurityError).Range, ast.Range{ - StartPos: ast.Position{Offset: 83, Line: 5, Column: 16}, - EndPos: ast.Position{Offset: 91, Line: 5, Column: 24}, + StartPos: ast.Position{Offset: 91, Line: 5, Column: 16}, + EndPos: ast.Position{Offset: 99, Line: 5, Column: 24}, }) }) t.Run("resource param nested write", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub resource R { + access(all) resource R { access(all) var x: Int init(x: Int) { self.x = x } - } - - view fun foo(_ r: @R): @R { - if true { - while true { - r.x = 3 - } - } - return <-r + view fun foo(_ r: @R): @R { + if true { + while true { + r.x = 3 + } + } + return <-r + } } `) @@ -853,25 +853,24 @@ func TestCheckResourceWritePurity(t *testing.T) { assert.IsType(t, &sema.PurityError{}, errs[0]) assert.Equal(t, errs[0].(*sema.PurityError).Range, ast.Range{ - StartPos: ast.Position{Offset: 284, Line: 12, Column: 24}, - EndPos: ast.Position{Offset: 290, Line: 12, Column: 30}, + StartPos: ast.Position{Offset: 230, Line: 10, Column: 7}, + EndPos: ast.Position{Offset: 236, Line: 10, Column: 13}, }) }) t.Run("internal resource write", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub resource R { + access(all) resource R { access(all) var x: Int view init(x: Int) { self.x = x } - } - - view fun foo(): @R { - let r <- create R(x: 0) - r.x = 1 - return <-r + view fun foo(): @R { + let r <- create R(x: 0) + r.x = 1 + return <-r + } } `) @@ -879,25 +878,24 @@ func TestCheckResourceWritePurity(t *testing.T) { assert.IsType(t, &sema.PurityError{}, errs[0]) assert.Equal(t, errs[0].(*sema.PurityError).Range, ast.Range{ - StartPos: ast.Position{Offset: 255, Line: 11, Column: 16}, - EndPos: ast.Position{Offset: 261, Line: 11, Column: 22}, + StartPos: ast.Position{Offset: 221, Line: 9, Column: 5}, + EndPos: ast.Position{Offset: 227, Line: 9, Column: 11}, }) }) t.Run("external resource move", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub resource R { + access(all) resource R { access(all) var x: Int init(x: Int) { self.x = x } - } - - view fun foo(_ f: @R): @R { - let b <- f - b.x = 3 - return <-b + view fun foo(_ f: @R): @R { + let b <- f + b.x = 3 + return <-b + } } `) @@ -905,8 +903,8 @@ func TestCheckResourceWritePurity(t *testing.T) { assert.IsType(t, &sema.PurityError{}, errs[0]) assert.Equal(t, errs[0].(*sema.PurityError).Range, ast.Range{ - StartPos: ast.Position{Offset: 244, Line: 11, Column: 16}, - EndPos: ast.Position{Offset: 250, Line: 11, Column: 22}, + StartPos: ast.Position{Offset: 210, Line: 9, Column: 5}, + EndPos: ast.Position{Offset: 216, Line: 9, Column: 11}, }) }) @@ -918,11 +916,10 @@ func TestCheckResourceWritePurity(t *testing.T) { init(_ x: Int) { self.x = x } - } - - view fun foo(_ a: @[R], _ x: Int): @[R] { - a[x].x = 4 - return <-a + view fun foo(_ a: @[R], _ x: Int): @[R] { + a[x].x = 4 + return <-a + } } `) @@ -930,8 +927,8 @@ func TestCheckResourceWritePurity(t *testing.T) { assert.IsType(t, &sema.PurityError{}, errs[0]) assert.Equal(t, errs[0].(*sema.PurityError).Range, ast.Range{ - StartPos: ast.Position{Offset: 206, Line: 10, Column: 13}, - EndPos: ast.Position{Offset: 214, Line: 10, Column: 21}, + StartPos: ast.Position{Offset: 177, Line: 8, Column: 5}, + EndPos: ast.Position{Offset: 185, Line: 8, Column: 13}, }) }) @@ -943,11 +940,10 @@ func TestCheckResourceWritePurity(t *testing.T) { init(_ x: Int) { self.x = x } - } - - view fun foo(_ a: @[[R]], _ x: Int): @[[R]] { - a[x][x].x = 4 - return <-a + view fun foo(_ a: @[[R]], _ x: Int): @[[R]] { + a[x][x].x = 4 + return <-a + } } `) @@ -955,15 +951,15 @@ func TestCheckResourceWritePurity(t *testing.T) { assert.IsType(t, &sema.PurityError{}, errs[0]) assert.Equal(t, errs[0].(*sema.PurityError).Range, ast.Range{ - StartPos: ast.Position{Offset: 213, Line: 10, Column: 16}, - EndPos: ast.Position{Offset: 221, Line: 10, Column: 24}, + StartPos: ast.Position{Offset: 184, Line: 8, Column: 8}, + EndPos: ast.Position{Offset: 192, Line: 8, Column: 16}, }) }) t.Run("resource moves", func(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub resource R { + access(all) resource R { access(all) var x: Int init(x: Int) { self.x = x diff --git a/runtime/tests/checker/reference_test.go b/runtime/tests/checker/reference_test.go index bfa6b0c02f..af3ae142ca 100644 --- a/runtime/tests/checker/reference_test.go +++ b/runtime/tests/checker/reference_test.go @@ -1328,8 +1328,8 @@ func TestCheckInvalidDictionaryAccessOptionalReference(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub struct S { - pub let foo: Number + access(all) struct S { + access(all) let foo: Number init() { self.foo = 0 } @@ -1349,8 +1349,8 @@ func TestCheckInvalidDictionaryAccessNonOptionalReference(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub struct S { - pub let foo: Number + access(all) struct S { + access(all) let foo: Number init() { self.foo = 0 } @@ -1369,8 +1369,8 @@ func TestCheckArrayAccessReference(t *testing.T) { t.Parallel() _, err := ParseAndCheck(t, ` - pub struct S { - pub let foo: Number + access(all) struct S { + access(all) let foo: Number init() { self.foo = 0 } @@ -1444,15 +1444,15 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- create R() let xRef = &x as &R xRef.a destroy x } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1470,15 +1470,15 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- create R() let xRef = &x as &R destroy x xRef.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1498,15 +1498,15 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- [<-create R()] let xRef = &x as &[R] destroy x xRef[0].a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1526,15 +1526,15 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- {1: <- create R()} let xRef = &x as &{Int: R} destroy x xRef[1]?.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1554,19 +1554,19 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- create R() let xRef = &x as &R consume(<-x) xRef.a } - pub fun consume(_ r: @AnyResource) { + access(all) fun consume(_ r: @AnyResource) { destroy r } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1586,19 +1586,19 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- [<-create R()] let xRef = &x as &[R] consume(<-x) xRef[0].a } - pub fun consume(_ r: @AnyResource) { + access(all) fun consume(_ r: @AnyResource) { destroy r } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1618,19 +1618,19 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- {1: <- create R()} let xRef = &x as &{Int: R} consume(<-x) xRef[1]?.a } - pub fun consume(_ r: @AnyResource) { + access(all) fun consume(_ r: @AnyResource) { destroy r } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1650,7 +1650,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { var x <- create R() var y <- create R() let xRef = &x as &R @@ -1660,8 +1660,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { xRef.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1681,7 +1681,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- create R() let xRef = &x as &R if true { @@ -1698,8 +1698,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { } } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1719,7 +1719,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheckAccount(t, ` - pub fun test() { + access(all) fun test() { authAccount.save(<-[<-create R()], to: /storage/a) let collectionRef = authAccount.borrow<&[R]>(from: /storage/a)! @@ -1728,12 +1728,16 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { let collection <- authAccount.load<@[R]>(from: /storage/a)! authAccount.save(<- collection, to: /storage/b) - ref.a = 2 + ref.setA(2) } - pub resource R { + access(all) resource R { access(all) var a: Int + access(all) fun setA(_ a: Int) { + self.a = a + } + init() { self.a = 5 } @@ -1751,7 +1755,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let f = fun() { let x <- create R() let xRef = &x as &R @@ -1762,8 +1766,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { f() } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1783,20 +1787,20 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub contract Test { - priv var x: @R + access(all) contract Test { + access(self) var x: @R init() { self.x <- create R() } - pub fun test() { + access(all) fun test() { let xRef = &self.x as &R xRef.a } } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1814,20 +1818,20 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub contract Test { - priv var x: @R + access(all) contract Test { + access(self) var x: @R init() { self.x <- create R() } - pub fun test() { + access(all) fun test() { let xRef = &Test.x as &R xRef.a } } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 } @@ -1844,7 +1848,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { var r: @{UInt64: {UInt64: [R]}} <- {} let ref1 = (&r[0] as &{UInt64: [R]}?)! let ref2 = (&ref1[0] as &[R]?)! @@ -1854,8 +1858,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { destroy r } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -1873,7 +1877,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { var r: @{UInt64: {UInt64: [R]}} <- {} let ref1 = (&r[0] as &{UInt64: [R]}?)! let ref2 = (&ref1[0] as &[R]?)! @@ -1882,8 +1886,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { ref3.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 } @@ -1902,15 +1906,15 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- create R() let xRef = (&x as &R?)! destroy x xRef.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 } @@ -1929,15 +1933,15 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { importedChecker, err := ParseAndCheckWithOptions(t, ` - pub contract Foo { - pub let field: @AnyResource + access(all) contract Foo { + access(all) let field: @AnyResource init() { self.field <- create R() } } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 } @@ -1955,7 +1959,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { ` import Foo from "imported" - pub fun test() { + access(all) fun test() { let xRef = &Foo.field as &AnyResource xRef } @@ -1980,14 +1984,14 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 } - pub fun test() { + access(all) fun test() { let xRef = &self as &R xRef.a } @@ -2004,15 +2008,15 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub contract Test { - pub let a: @{UInt64: {UInt64: Test.R}} + access(all) contract Test { + access(all) let a: @{UInt64: {UInt64: Test.R}} init() { self.a <- {} } - pub resource R { - pub fun test() { + access(all) resource R { + access(all) fun test() { if let storage = &Test.a[0] as &{UInt64: Test.R}? { let nftRef = (&storage[0] as &Test.R?)! nftRef @@ -2032,9 +2036,9 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub contract Test { - pub resource R { - pub fun test () { + access(all) contract Test { + access(all) resource R { + access(all) fun test () { let sourceRefNFTs: {UInt64: &Test.R} = {} let sourceNFTs: @[Test.R] <- [] @@ -2051,7 +2055,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { destroy sourceNFTs } - pub fun bar(): Bool { + access(all) fun bar(): Bool { return true } } @@ -2068,9 +2072,9 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub contract Test { - pub resource R { - pub fun test(packList: &[Test.R]) { + access(all) contract Test { + access(all) resource R { + access(all) fun test(packList: &[Test.R]) { var i = 0; while i < packList.length { let pack = &packList[i] as &Test.R; @@ -2095,7 +2099,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- create R() let xRef = &x as &R if true { @@ -2108,8 +2112,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { destroy x } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -2136,15 +2140,15 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x: @R? <- create R() let ref = (&x as &R?) ?? nil destroy x ref!.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -2165,7 +2169,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x: @R? <- create R() let y: @R <- create R() @@ -2175,8 +2179,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { destroy x } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -2197,7 +2201,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x: @R? <- create R() let y: @R <- create R() @@ -2207,8 +2211,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { ref!.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -2230,7 +2234,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x: @R? <- create R() let y: @R <- create R() let z: @R? <- create R() @@ -2243,8 +2247,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { ref2!.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -2267,7 +2271,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- create R() var ref1: &R? = nil ref1 = &x as &R @@ -2276,8 +2280,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { ref1!.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -2297,7 +2301,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x = S() var ref1: &S? = nil ref1 = &x as &S @@ -2305,10 +2309,10 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { ref1!.a } - pub fun consume(_ s:S) {} + access(all) fun consume(_ s:S) {} - pub struct S { - pub let a: Int + access(all) struct S { + access(all) let a: Int init() { self.a = 5 @@ -2326,7 +2330,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- create R() let ref1 = &x as &R let ref2 = ref1 @@ -2335,8 +2339,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { ref3.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -2356,26 +2360,30 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let r <- create R() let s = S() - s.b = &r as &R + s.setB(&r as &R) destroy r s.b!.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 } } - pub struct S { + access(all) struct S { access(all) var b: &R? + access(all) fun setB(_ b: &R) { + self.b = b + } + init() { self.b = nil } @@ -2392,27 +2400,31 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let r <- create R() let s = S() - s.b = &r as &R + s.setB(&r as &R) let x = s.b! destroy r x.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 } } - pub struct S { + access(all) struct S { access(all) var b: &R? + access(all) fun setB(_ b: &R) { + self.b = b + } + init() { self.b = nil } @@ -2429,15 +2441,15 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x: @R? <- create R() let ref = true ? (&x as &R?) : nil destroy x ref!.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -2458,7 +2470,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x: @R? <- create R() let y: @R <- create R() @@ -2468,8 +2480,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { destroy x } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -2490,7 +2502,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x: @R? <- create R() let y: @R <- create R() @@ -2500,8 +2512,8 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { ref!.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -2523,15 +2535,15 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { _, err := ParseAndCheck(t, ` - pub fun test() { + access(all) fun test() { let x <- create R() let xRef = &x as &R destroy x xRef.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 @@ -2554,7 +2566,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { t, prevInvalidationNote.Range.StartPos, ast.Position{ - Offset: 126, + Offset: 134, Line: 5, Column: 24, }) @@ -2562,7 +2574,7 @@ func TestCheckInvalidatedReferenceUse(t *testing.T) { t, prevInvalidationNote.Range.EndPos, ast.Position{ - Offset: 126, + Offset: 134, Line: 5, Column: 24, }) diff --git a/runtime/tests/checker/resources_test.go b/runtime/tests/checker/resources_test.go index ec4e04b1d5..19249d6a98 100644 --- a/runtime/tests/checker/resources_test.go +++ b/runtime/tests/checker/resources_test.go @@ -1627,7 +1627,7 @@ func TestCheckInvalidCreateImportedResource(t *testing.T) { importedChecker, err := ParseAndCheckWithOptions(t, ` - pub resource R {} + access(all) resource R {} `, ParseAndCheckOptions{ Location: ImportedLocation, @@ -1640,7 +1640,7 @@ func TestCheckInvalidCreateImportedResource(t *testing.T) { ` import R from "imported" - pub fun test() { + access(all) fun test() { destroy create R() } `, @@ -1674,7 +1674,7 @@ func TestCheckResourceCreationInContracts(t *testing.T) { contract B { - pub fun test() { + access(all) fun test() { destroy create A.R() } } @@ -1693,7 +1693,7 @@ func TestCheckResourceCreationInContracts(t *testing.T) { contract A { resource R {} - pub fun test() { + access(all) fun test() { destroy create R() } } @@ -1811,11 +1811,11 @@ func TestCheckInvalidResourceLoss(t *testing.T) { _, err := ParseAndCheck(t, ` resource Foo {} - pub fun foo(): @Foo? { + access(all) fun foo(): @Foo? { return <- create Foo() } - pub let isNil = foo() == nil + access(all) let isNil = foo() == nil `) errs := RequireCheckerErrors(t, err, 1) @@ -5325,7 +5325,7 @@ func TestCheckInvalidResourceLossInNestedContractResource(t *testing.T) { _, err := ParseAndCheck(t, ` - pub contract C { + access(all) contract C { resource R { @@ -5336,7 +5336,7 @@ func TestCheckInvalidResourceLossInNestedContractResource(t *testing.T) { } } - pub fun bar() { + access(all) fun bar() { return } } diff --git a/runtime/tests/checker/return_test.go b/runtime/tests/checker/return_test.go index 1a2369369c..6c5ad9649c 100644 --- a/runtime/tests/checker/return_test.go +++ b/runtime/tests/checker/return_test.go @@ -176,7 +176,7 @@ func TestCheckInvalidMissingReturnStatementStructFunction(t *testing.T) { self.foo = foo } - pub fun getFoo(): Int { + access(all) fun getFoo(): Int { if 2 > 1 { return 0 } diff --git a/runtime/tests/checker/type_inference_test.go b/runtime/tests/checker/type_inference_test.go index 21480939b3..4e9a7e7088 100644 --- a/runtime/tests/checker/type_inference_test.go +++ b/runtime/tests/checker/type_inference_test.go @@ -816,17 +816,17 @@ func TestCheckArraySupertypeInference(t *testing.T) { code: ` let x = [Foo(), Bar(), Baz()] - pub struct interface I1 {} + access(all) struct interface I1 {} - pub struct interface I2 {} + access(all) struct interface I2 {} - pub struct interface I3 {} + access(all) struct interface I3 {} - pub struct Foo: I1, I2 {} + access(all) struct Foo: I1, I2 {} - pub struct Bar: I2, I3 {} + access(all) struct Bar: I2, I3 {} - pub struct Baz: I1, I2, I3 {} + access(all) struct Baz: I1, I2, I3 {} `, expectedElementType: &sema.RestrictedType{ Type: sema.AnyStructType, @@ -844,11 +844,11 @@ func TestCheckArraySupertypeInference(t *testing.T) { code: ` let x = [[Bar()], [Baz()]] - pub struct interface Foo {} + access(all) struct interface Foo {} - pub struct Bar: Foo {} + access(all) struct Bar: Foo {} - pub struct Baz: Foo {} + access(all) struct Baz: Foo {} `, expectedElementType: &sema.VariableSizedType{ Type: &sema.RestrictedType{ @@ -869,11 +869,11 @@ func TestCheckArraySupertypeInference(t *testing.T) { // Covariance is supported with explicit type annotation. let x = [[Bar()], [Baz()]] as [[{Foo}]] - pub struct interface Foo {} + access(all) struct interface Foo {} - pub struct Bar: Foo {} + access(all) struct Bar: Foo {} - pub struct Baz: Foo {} + access(all) struct Baz: Foo {} `, expectedElementType: &sema.VariableSizedType{ Type: &sema.RestrictedType{ @@ -937,9 +937,9 @@ func TestCheckArraySupertypeInference(t *testing.T) { code := ` let x = [<- create Foo(), Bar()] - pub resource Foo {} + access(all) resource Foo {} - pub struct Bar {} + access(all) struct Bar {} ` _, err := ParseAndCheck(t, code) errs := RequireCheckerErrors(t, err, 1) @@ -1016,17 +1016,17 @@ func TestCheckDictionarySupertypeInference(t *testing.T) { code: ` let x = {0: Foo(), 1: Bar(), 2: Baz()} - pub struct interface I1 {} + access(all) struct interface I1 {} - pub struct interface I2 {} + access(all) struct interface I2 {} - pub struct interface I3 {} + access(all) struct interface I3 {} - pub struct Foo: I1, I2 {} + access(all) struct Foo: I1, I2 {} - pub struct Bar: I2, I3 {} + access(all) struct Bar: I2, I3 {} - pub struct Baz: I1, I2, I3 {} + access(all) struct Baz: I1, I2, I3 {} `, expectedKeyType: sema.IntType, expectedValueType: &sema.RestrictedType{ @@ -1045,11 +1045,11 @@ func TestCheckDictionarySupertypeInference(t *testing.T) { code: ` let x = { 0: {100: Bar()}, 1: {200: Baz()} } - pub struct interface Foo {} + access(all) struct interface Foo {} - pub struct Bar: Foo {} + access(all) struct Bar: Foo {} - pub struct Baz: Foo {} + access(all) struct Baz: Foo {} `, expectedKeyType: sema.IntType, expectedValueType: &sema.DictionaryType{ @@ -1072,11 +1072,11 @@ func TestCheckDictionarySupertypeInference(t *testing.T) { // Covariance is supported with explicit type annotation. let x = { 0: {100: Bar()}, 1: {200: Baz()} } as {Int: {Int: {Foo}}} - pub struct interface Foo {} + access(all) struct interface Foo {} - pub struct Bar: Foo {} + access(all) struct Bar: Foo {} - pub struct Baz: Foo {} + access(all) struct Baz: Foo {} `, expectedKeyType: sema.IntType, expectedValueType: &sema.DictionaryType{ @@ -1104,7 +1104,7 @@ func TestCheckDictionarySupertypeInference(t *testing.T) { code: ` let x <- {0: <- {10: <- create Foo()}, 1: <- {"one": <- create Foo()}} - pub resource Foo {} + access(all) resource Foo {} `, expectedKeyType: sema.IntType, expectedValueType: sema.AnyResourceType, @@ -1133,9 +1133,9 @@ func TestCheckDictionarySupertypeInference(t *testing.T) { code := ` let x = {0: <- create Foo(), 1: Bar()} - pub resource Foo {} + access(all) resource Foo {} - pub struct Bar {} + access(all) struct Bar {} ` _, err := ParseAndCheck(t, code) errs := RequireCheckerErrors(t, err, 1) From e483b81e7d025f2cd4a63b4da22011ae06723711 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Tue, 6 Jun 2023 15:38:54 -0400 Subject: [PATCH 08/20] update interpreter tests --- runtime/tests/interpreter/account_test.go | 2 +- runtime/tests/interpreter/attachments_test.go | 32 +- runtime/tests/interpreter/condition_test.go | 50 +- .../tests/interpreter/entitlements_test.go | 2 +- runtime/tests/interpreter/enum_test.go | 4 +- runtime/tests/interpreter/function_test.go | 56 +- runtime/tests/interpreter/if_test.go | 10 +- runtime/tests/interpreter/import_test.go | 10 +- runtime/tests/interpreter/interpreter_test.go | 144 +-- .../tests/interpreter/memory_metering_test.go | 900 +++++++++--------- runtime/tests/interpreter/metering_test.go | 12 +- runtime/tests/interpreter/reference_test.go | 113 ++- runtime/tests/interpreter/resources_test.go | 43 +- runtime/tests/interpreter/runtimetype_test.go | 2 +- runtime/tests/interpreter/uuid_test.go | 8 +- 15 files changed, 736 insertions(+), 652 deletions(-) diff --git a/runtime/tests/interpreter/account_test.go b/runtime/tests/interpreter/account_test.go index 2e28f26dfc..69edb84741 100644 --- a/runtime/tests/interpreter/account_test.go +++ b/runtime/tests/interpreter/account_test.go @@ -3014,7 +3014,7 @@ func TestInterpretAccountIterationMutation(t *testing.T) { importedChecker, err := checker.ParseAndCheckWithOptions(t, ` - pub fun foo() { + access(all) fun foo() { account.save("bar", to: /storage/foo5) } `, diff --git a/runtime/tests/interpreter/attachments_test.go b/runtime/tests/interpreter/attachments_test.go index 30de089a4c..a5d8386c1a 100644 --- a/runtime/tests/interpreter/attachments_test.go +++ b/runtime/tests/interpreter/attachments_test.go @@ -1571,6 +1571,11 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { resource R {} attachment A for R { access(all) var id: UInt8 + + access(all) fun setID(_ id: UInt8) { + self.id = id + } + init() { self.id = 1 } @@ -1585,7 +1590,7 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { // Then update the field of the attachment. var r3 <- r2 let a2 = r3[A]! - a2.id = 5 + a2.setID(5) authAccount.save(<-r3, to: /storage/foo) // Access the attachment filed from the previous reference. @@ -1646,6 +1651,11 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { } attachment A for R { access(all) var id: UInt8 + + access(all) fun setID(_ id: UInt8) { + self.id = id + } + init() { self.id = 1 } @@ -1658,7 +1668,7 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { // Then update the field of the attachment. var r3 <- r2 let a2 = r3.r[A]! - a2.id = 5 + a2.setID(5) authAccount.save(<-r3, to: /storage/foo) // Access the attachment filed from the previous reference. @@ -1680,8 +1690,13 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { address := interpreter.NewUnmeteredAddressValueFromBytes([]byte{42}) inter, _ := testAccount(t, address, true, ` - pub resource R { + access(all) resource R { access(all) var id: UInt8 + + access(all) fun setID(_ id: UInt8) { + self.id = id + } + init() { self.id = 1 } @@ -1702,7 +1717,7 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { a.saveBaseRef() var r2 <- r - r2.id = 5 + r2.setID(5) authAccount.save(<-r2, to: /storage/foo) return ref!.id }`, @@ -1758,12 +1773,17 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { address := interpreter.NewUnmeteredAddressValueFromBytes([]byte{42}) inter, _ := testAccount(t, address, true, ` - pub resource R {} + access(all) resource R {} var ref: &A? = nil attachment A for R { access(all) var id: UInt8 + + access(all) fun setID(_ id: UInt8) { + self.id = id + } + init() { self.id = 1 } @@ -1779,7 +1799,7 @@ func TestInterpretAttachmentResourceReferenceInvalidation(t *testing.T) { var r2 <- r let a = r2[A]! - a.id = 5 + a.setID(5) authAccount.save(<-r2, to: /storage/foo) return ref!.id }`, diff --git a/runtime/tests/interpreter/condition_test.go b/runtime/tests/interpreter/condition_test.go index bc85ef6cf6..d57d961ffe 100644 --- a/runtime/tests/interpreter/condition_test.go +++ b/runtime/tests/interpreter/condition_test.go @@ -404,16 +404,16 @@ func TestInterpretInterfaceFunctionUseWithPreCondition(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, fmt.Sprintf( ` - pub %[1]s interface Test { - pub fun test(x: Int): Int { + access(all) %[1]s interface Test { + access(all) fun test(x: Int): Int { pre { x > 0: "x must be positive" } } } - pub %[1]s TestImpl: Test { - pub fun test(x: Int): Int { + access(all) %[1]s TestImpl: Test { + access(all) fun test(x: Int): Int { pre { x < 2: "x must be smaller than 2" } @@ -421,7 +421,7 @@ func TestInterpretInterfaceFunctionUseWithPreCondition(t *testing.T) { } } - pub fun callTest(x: Int): Int { + access(all) fun callTest(x: Int): Int { %[2]s let res = %[3]s.test(x: x) %[4]s @@ -491,7 +491,7 @@ func TestInterpretInitializerWithInterfacePreCondition(t *testing.T) { if compositeKind == common.CompositeKindContract { // use the contract singleton, so it is loaded testFunction = ` - pub fun test() { + access(all) fun test() { TestImpl } ` @@ -501,7 +501,7 @@ func TestInterpretInitializerWithInterfacePreCondition(t *testing.T) { testFunction = fmt.Sprintf( ` - pub fun test(x: Int): %[1]s%[2]s { + access(all) fun test(x: Int): %[1]s%[2]s { return %[3]s %[4]s TestImpl%[5]s } `, @@ -516,7 +516,7 @@ func TestInterpretInitializerWithInterfacePreCondition(t *testing.T) { checker, err := checker.ParseAndCheck(t, fmt.Sprintf( ` - pub %[1]s interface Test { + access(all) %[1]s interface Test { init(x: Int) { pre { x > 0: "x must be positive" @@ -524,7 +524,7 @@ func TestInterpretInitializerWithInterfacePreCondition(t *testing.T) { } } - pub %[1]s TestImpl: Test { + access(all) %[1]s TestImpl: Test { init(x: Int) { pre { x < 2: "x must be smaller than 2" @@ -623,18 +623,18 @@ func TestInterpretTypeRequirementWithPreCondition(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, ` - pub struct interface Also { - pub fun test(x: Int) { + access(all) struct interface Also { + access(all) fun test(x: Int) { pre { x >= 0: "x >= 0" } } } - pub contract interface Test { + access(all) contract interface Test { - pub struct Nested { - pub fun test(x: Int) { + access(all) struct Nested { + access(all) fun test(x: Int) { pre { x >= 1: "x >= 1" } @@ -642,10 +642,10 @@ func TestInterpretTypeRequirementWithPreCondition(t *testing.T) { } } - pub contract TestImpl: Test { + access(all) contract TestImpl: Test { - pub struct Nested: Also { - pub fun test(x: Int) { + access(all) struct Nested: Also { + access(all) fun test(x: Int) { pre { x < 2: "x < 2" } @@ -653,7 +653,7 @@ func TestInterpretTypeRequirementWithPreCondition(t *testing.T) { } } - pub fun test(x: Int) { + access(all) fun test(x: Int) { TestImpl.Nested().test(x: x) } `, @@ -797,11 +797,11 @@ func TestInterpretResourceTypeRequirementInitializerAndDestructorPreConditions(t inter, err := parseCheckAndInterpretWithOptions(t, ` - pub contract interface CI { + access(all) contract interface CI { - pub resource R { + access(all) resource R { - pub x: Int + access(all) x: Int init(_ x: Int) { pre { x > 1: "invalid init" } @@ -813,18 +813,18 @@ func TestInterpretResourceTypeRequirementInitializerAndDestructorPreConditions(t } } - pub contract C: CI { + access(all) contract C: CI { - pub resource R { + access(all) resource R { - pub let x: Int + access(all) let x: Int init(_ x: Int) { self.x = x } } - pub fun test(_ x: Int) { + access(all) fun test(_ x: Int) { let r <- create C.R(x) destroy r } diff --git a/runtime/tests/interpreter/entitlements_test.go b/runtime/tests/interpreter/entitlements_test.go index a9a140f80b..3a32749607 100644 --- a/runtime/tests/interpreter/entitlements_test.go +++ b/runtime/tests/interpreter/entitlements_test.go @@ -2227,7 +2227,7 @@ func TestInterpretEntitledAttachments(t *testing.T) { struct S {} struct T {} access(M) attachment A for S { - priv let t: T + access(self) let t: T init(t: T) { self.t = t } diff --git a/runtime/tests/interpreter/enum_test.go b/runtime/tests/interpreter/enum_test.go index ce6988bb40..a79cbded02 100644 --- a/runtime/tests/interpreter/enum_test.go +++ b/runtime/tests/interpreter/enum_test.go @@ -226,8 +226,8 @@ func TestInterpretEnumInContract(t *testing.T) { ` contract C { enum E: UInt8 { - pub case a - pub case b + access(all) case a + access(all) case b } var e: E diff --git a/runtime/tests/interpreter/function_test.go b/runtime/tests/interpreter/function_test.go index 8ad7ee59f1..5b04cc21bc 100644 --- a/runtime/tests/interpreter/function_test.go +++ b/runtime/tests/interpreter/function_test.go @@ -39,14 +39,14 @@ func TestInterpretResultVariable(t *testing.T) { t.Parallel() inter := parseCheckAndInterpret(t, ` - pub resource R { - pub let id: UInt8 + access(all) resource R { + access(all) let id: UInt8 init() { self.id = 1 } } - pub fun main(): @R { + access(all) fun main(): @R { post { result.id == 1: "invalid id" } @@ -72,14 +72,14 @@ func TestInterpretResultVariable(t *testing.T) { t.Parallel() inter := parseCheckAndInterpret(t, ` - pub resource R { - pub let id: UInt8 + access(all) resource R { + access(all) let id: UInt8 init() { self.id = 1 } } - pub fun main(): @R? { + access(all) fun main(): @R? { post { result!.id == 1: "invalid id" } @@ -110,14 +110,14 @@ func TestInterpretResultVariable(t *testing.T) { t.Parallel() inter := parseCheckAndInterpret(t, ` - pub resource R { - pub let id: UInt8 + access(all) resource R { + access(all) let id: UInt8 init() { self.id = 1 } } - pub fun main(): @R? { + access(all) fun main(): @R? { post { result == nil: "invalid result" } @@ -134,14 +134,14 @@ func TestInterpretResultVariable(t *testing.T) { t.Parallel() inter := parseCheckAndInterpret(t, ` - pub resource R { - pub let id: UInt8 + access(all) resource R { + access(all) let id: UInt8 init() { self.id = 1 } } - pub fun main(): @AnyResource { + access(all) fun main(): @AnyResource { post { result != nil: "invalid value" } @@ -176,8 +176,11 @@ func TestInterpretResultVariable(t *testing.T) { var checkerErrors []error inter, err := parseCheckAndInterpretWithOptions(t, ` - pub resource R { + access(all) resource R { access(all) var id: UInt8 + access(all) fun setID(_ id: UInt8) { + self.id = id + } init() { self.id = 1 } @@ -185,29 +188,29 @@ func TestInterpretResultVariable(t *testing.T) { var ref: &R? = nil - pub fun main(): @R? { + access(all) fun main(): @R? { var r <- createAndStoreRef() if var r2 <- r { - r2.id = 2 + r2.setID(2) return <- r2 } return nil } - pub fun createAndStoreRef(): @R? { + access(all) fun createAndStoreRef(): @R? { post { storeRef(result) } return <- create R() } - pub fun storeRef(_ r: &R?): Bool { + access(all) fun storeRef(_ r: &R?): Bool { ref = r return r != nil } - pub fun getID(): UInt8 { + access(all) fun getID(): UInt8 { return ref!.id }`, ParseCheckAndInterpretOptions{ @@ -234,8 +237,13 @@ func TestInterpretResultVariable(t *testing.T) { var checkerErrors []error inter, err := parseCheckAndInterpretWithOptions(t, ` - pub resource R { + access(all) resource R { access(all) var id: UInt8 + + access(all) fun setID(_ id: UInt8) { + self.id = id + } + init() { self.id = 1 } @@ -243,25 +251,25 @@ func TestInterpretResultVariable(t *testing.T) { var ref: &R? = nil - pub fun main(): @R { + access(all) fun main(): @R { var r <- createAndStoreRef() - r.id = 2 + r.setID(2) return <- r } - pub fun createAndStoreRef(): @R { + access(all) fun createAndStoreRef(): @R { post { storeRef(result) } return <- create R() } - pub fun storeRef(_ r: &R): Bool { + access(all) fun storeRef(_ r: &R): Bool { ref = r return r != nil } - pub fun getID(): UInt8 { + access(all) fun getID(): UInt8 { return ref!.id }`, ParseCheckAndInterpretOptions{ diff --git a/runtime/tests/interpreter/if_test.go b/runtime/tests/interpreter/if_test.go index 5d45cebda1..bf341724b7 100644 --- a/runtime/tests/interpreter/if_test.go +++ b/runtime/tests/interpreter/if_test.go @@ -37,7 +37,7 @@ func TestInterpretIfStatement(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, ` - pub fun testTrue(): Int { + access(all) fun testTrue(): Int { if true { return 2 } else { @@ -46,7 +46,7 @@ func TestInterpretIfStatement(t *testing.T) { return 4 } - pub fun testFalse(): Int { + access(all) fun testFalse(): Int { if false { return 2 } else { @@ -55,14 +55,14 @@ func TestInterpretIfStatement(t *testing.T) { return 4 } - pub fun testNoElse(): Int { + access(all) fun testNoElse(): Int { if true { return 2 } return 3 } - pub fun testElseIf(): Int { + access(all) fun testElseIf(): Int { if false { return 2 } else if true { @@ -71,7 +71,7 @@ func TestInterpretIfStatement(t *testing.T) { return 4 } - pub fun testElseIfElse(): Int { + access(all) fun testElseIfElse(): Int { if false { return 2 } else if false { diff --git a/runtime/tests/interpreter/import_test.go b/runtime/tests/interpreter/import_test.go index 3cf0c784f6..ff699b8cbc 100644 --- a/runtime/tests/interpreter/import_test.go +++ b/runtime/tests/interpreter/import_test.go @@ -156,12 +156,12 @@ func TestInterpretImportMultipleProgramsFromLocation(t *testing.T) { importedCheckerA, err := checker.ParseAndCheckWithOptions(t, ` // this function *SHOULD* be imported in the importing program - pub fun a(): Int { + access(all) fun a(): Int { return 1 } // this function should *NOT* be imported in the importing program - pub fun b(): Int { + access(all) fun b(): Int { return 11 } `, @@ -177,12 +177,12 @@ func TestInterpretImportMultipleProgramsFromLocation(t *testing.T) { importedCheckerB, err := checker.ParseAndCheckWithOptions(t, ` // this function *SHOULD* be imported in the importing program - pub fun b(): Int { + access(all) fun b(): Int { return 2 } // this function should *NOT* be imported in the importing program - pub fun a(): Int { + access(all) fun a(): Int { return 22 } `, @@ -199,7 +199,7 @@ func TestInterpretImportMultipleProgramsFromLocation(t *testing.T) { ` import a, b from 0x1 - pub fun test(): Int { + access(all) fun test(): Int { return a() + b() } `, diff --git a/runtime/tests/interpreter/interpreter_test.go b/runtime/tests/interpreter/interpreter_test.go index bf0e5ac0f6..223a4373cd 100644 --- a/runtime/tests/interpreter/interpreter_test.go +++ b/runtime/tests/interpreter/interpreter_test.go @@ -1091,7 +1091,7 @@ func TestInterpretReturns(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, ` - pub fun returnEarly(): Int { + access(all) fun returnEarly(): Int { return 2 return 1 } @@ -1881,7 +1881,7 @@ func TestInterpretHostFunction(t *testing.T) { t.Parallel() const code = ` - pub let a = test(1, 2) + access(all) let a = test(1, 2) ` program, err := parser.ParseProgram(nil, []byte(code), parser.Config{}) @@ -1961,7 +1961,7 @@ func TestInterpretHostFunctionWithVariableArguments(t *testing.T) { t.Parallel() const code = ` - pub let nothing = test(1, true, "test") + access(all) let nothing = test(1, true, "test") ` program, err := parser.ParseProgram(nil, []byte(code), parser.Config{}) @@ -2071,9 +2071,9 @@ func TestInterpretCompositeDeclaration(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, fmt.Sprintf( ` - pub %[1]s Test {} + access(all) %[1]s Test {} - pub fun test(): %[2]sTest { + access(all) fun test(): %[2]sTest { return %[3]s %[4]s Test%[5]s } `, @@ -3670,7 +3670,7 @@ func TestInterpretCompositeNilEquality(t *testing.T) { identifier = "X" } else { setupCode = fmt.Sprintf( - `pub let x: %[1]sX? %[2]s %[3]s X%[4]s`, + `access(all) let x: %[1]sX? %[2]s %[3]s X%[4]s`, compositeKind.Annotation(), compositeKind.TransferOperator(), compositeKind.ConstructionKeyword(), @@ -3692,12 +3692,12 @@ func TestInterpretCompositeNilEquality(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, fmt.Sprintf( ` - pub %[1]s X%[2]s %[3]s + access(all) %[1]s X%[2]s %[3]s %[4]s - pub let y = %[5]s == nil - pub let z = nil == %[5]s + access(all) let y = %[5]s == nil + access(all) let z = nil == %[5]s `, compositeKind.Keyword(), conformances, @@ -3760,11 +3760,11 @@ func TestInterpretInterfaceConformanceNoRequirements(t *testing.T) { inter := parseCheckAndInterpret(t, fmt.Sprintf( ` - pub %[1]s interface Test {} + access(all) %[1]s interface Test {} - pub %[1]s TestImpl: Test {} + access(all) %[1]s TestImpl: Test {} - pub let test: %[2]s%[3]s %[4]s %[5]s TestImpl%[6]s + access(all) let test: %[2]s%[3]s %[4]s %[5]s TestImpl%[6]s `, compositeKind.Keyword(), compositeKind.Annotation(), @@ -3800,7 +3800,7 @@ func TestInterpretInterfaceFieldUse(t *testing.T) { interfaceType := AsInterfaceType("Test", compositeKind) setupCode = fmt.Sprintf( - `pub let test: %[1]s%[2]s %[3]s %[4]s TestImpl%[5]s`, + `access(all) let test: %[1]s%[2]s %[3]s %[4]s TestImpl%[5]s`, compositeKind.Annotation(), interfaceType, compositeKind.TransferOperator(), @@ -3815,12 +3815,12 @@ func TestInterpretInterfaceFieldUse(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, fmt.Sprintf( ` - pub %[1]s interface Test { - pub x: Int + access(all) %[1]s interface Test { + access(all) x: Int } - pub %[1]s TestImpl: Test { - pub var x: Int + access(all) %[1]s TestImpl: Test { + access(all) var x: Int init(x: Int) { self.x = x @@ -3829,7 +3829,7 @@ func TestInterpretInterfaceFieldUse(t *testing.T) { %[2]s - pub let x = %[3]s.x + access(all) let x = %[3]s.x `, compositeKind.Keyword(), setupCode, @@ -3880,7 +3880,7 @@ func TestInterpretInterfaceFunctionUse(t *testing.T) { interfaceType := AsInterfaceType("Test", compositeKind) setupCode = fmt.Sprintf( - `pub let test: %[1]s %[2]s %[3]s %[4]s TestImpl%[5]s`, + `access(all) let test: %[1]s %[2]s %[3]s %[4]s TestImpl%[5]s`, compositeKind.Annotation(), interfaceType, compositeKind.TransferOperator(), @@ -3895,19 +3895,19 @@ func TestInterpretInterfaceFunctionUse(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, fmt.Sprintf( ` - pub %[1]s interface Test { - pub fun test(): Int + access(all) %[1]s interface Test { + access(all) fun test(): Int } - pub %[1]s TestImpl: Test { - pub fun test(): Int { + access(all) %[1]s TestImpl: Test { + access(all) fun test(): Int { return 2 } } %[2]s - pub let val = %[3]s.test() + access(all) let val = %[3]s.test() `, compositeKind.Keyword(), setupCode, @@ -3937,7 +3937,7 @@ func TestInterpretImport(t *testing.T) { importedChecker, err := checker.ParseAndCheckWithOptions(t, ` - pub fun answer(): Int { + access(all) fun answer(): Int { return 42 } `, @@ -3951,7 +3951,7 @@ func TestInterpretImport(t *testing.T) { ` import answer from "imported" - pub fun test(): Int { + access(all) fun test(): Int { return answer() } `, @@ -4055,7 +4055,7 @@ func TestInterpretImportError(t *testing.T) { } const importedCode1 = ` - pub fun realAnswer(): Int { + access(all) fun realAnswer(): Int { return panic("?!") } ` @@ -4065,7 +4065,7 @@ func TestInterpretImportError(t *testing.T) { const importedCode2 = ` import realAnswer from "imported1" - pub fun answer(): Int { + access(all) fun answer(): Int { return realAnswer() } ` @@ -4075,7 +4075,7 @@ func TestInterpretImportError(t *testing.T) { const code = ` import answer from "imported2" - pub fun test(): Int { + access(all) fun test(): Int { return answer() } ` @@ -6512,12 +6512,12 @@ func TestInterpretCompositeFunctionInvocationFromImportingProgram(t *testing.T) importedChecker, err := checker.ParseAndCheckWithOptions(t, ` // function must have arguments - pub fun x(x: Int) {} + access(all) fun x(x: Int) {} // invocation must be in composite - pub struct Y { + access(all) struct Y { - pub fun x() { + access(all) fun x() { x(x: 1) } } @@ -6532,7 +6532,7 @@ func TestInterpretCompositeFunctionInvocationFromImportingProgram(t *testing.T) ` import Y from "imported" - pub fun test() { + access(all) fun test() { // get member must bind using imported interpreter Y().x() } @@ -7557,7 +7557,7 @@ func TestInterpretReferenceExpression(t *testing.T) { inter := parseCheckAndInterpret(t, ` resource R { - pub let x: Int + access(all) let x: Int init(_ x: Int) { self.x = x @@ -7589,25 +7589,25 @@ func TestInterpretReferenceUse(t *testing.T) { t.Parallel() inter := parseCheckAndInterpret(t, ` - pub resource R { + access(all) resource R { access(all) var x: Int init() { self.x = 0 } - pub fun setX(_ newX: Int) { + access(all) fun setX(_ newX: Int) { self.x = newX } } - pub fun test(): [Int] { + access(all) fun test(): [Int] { let r <- create R() let ref1 = &r as &R let ref2 = &r as &R - ref1.x = 1 + ref1.setX(1) let x1 = ref1.x ref1.setX(2) let x2 = ref1.x @@ -7645,23 +7645,23 @@ func TestInterpretReferenceUseAccess(t *testing.T) { t.Parallel() inter := parseCheckAndInterpret(t, ` - pub resource R { + access(all) resource R { access(all) var x: Int init() { self.x = 0 } - pub fun setX(_ newX: Int) { + access(all) fun setX(_ newX: Int) { self.x = newX } } - pub fun test(): [Int] { + access(all) fun test(): [Int] { let rs <- [<-create R()] let ref = &rs as &[R] let x0 = ref[0].x - ref[0].x = 1 + ref[0].setX(1) let x1 = ref[0].x ref[0].setX(2) let x2 = ref[0].x @@ -8099,22 +8099,22 @@ func TestInterpretCompositeDeclarationNestedTypeScopingOuterInner(t *testing.T) inter, err := parseCheckAndInterpretWithOptions(t, ` - pub contract Test { + access(all) contract Test { - pub struct X { + access(all) struct X { - pub fun test(): X { + access(all) fun test(): X { return Test.x() } } - pub fun x(): X { + access(all) fun x(): X { return X() } } - pub let x1 = Test.x() - pub let x2 = x1.test() + access(all) let x1 = Test.x() + access(all) let x2 = x1.test() `, ParseCheckAndInterpretOptions{ Config: &interpreter.Config{ @@ -8154,12 +8154,12 @@ func TestInterpretCompositeDeclarationNestedConstructor(t *testing.T) { inter, err := parseCheckAndInterpretWithOptions(t, ` - pub contract Test { + access(all) contract Test { - pub struct X {} + access(all) struct X {} } - pub let x = Test.X() + access(all) let x = Test.X() `, ParseCheckAndInterpretOptions{ Config: &interpreter.Config{ @@ -8191,7 +8191,7 @@ func TestInterpretFungibleTokenContract(t *testing.T) { examples.FungibleTokenContractInterface, examples.ExampleFungibleTokenContract, ` - pub fun test(): [Int; 2] { + access(all) fun test(): [Int; 2] { let publisher <- ExampleToken.sprout(balance: 100) let receiver <- ExampleToken.sprout(balance: 0) @@ -8258,21 +8258,21 @@ func TestInterpretContractAccountFieldUse(t *testing.T) { t.Parallel() code := ` - pub contract Test { - pub let address: Address + access(all) contract Test { + access(all) let address: Address init() { // field 'account' can be used, as it is considered initialized self.address = self.account.address } - pub fun test(): Address { + access(all) fun test(): Address { return self.account.address } } - pub let address1 = Test.address - pub let address2 = Test.test() + access(all) let address1 = Test.address + access(all) let address2 = Test.test() ` addressValue := interpreter.AddressValue{ @@ -8411,11 +8411,11 @@ func TestInterpretContractUseInNestedDeclaration(t *testing.T) { t.Parallel() inter, err := parseCheckAndInterpretWithOptions(t, ` - pub contract C { + access(all) contract C { - pub var i: Int + access(all) var i: Int - pub struct S { + access(all) struct S { init() { C.i = C.i + 1 @@ -8800,9 +8800,9 @@ func TestInterpretResourceOwnerFieldUse(t *testing.T) { t.Parallel() code := ` - pub resource R {} + access(all) resource R {} - pub fun test(): [Address?] { + access(all) fun test(): [Address?] { let addresses: [Address?] = [] let r <- create R() @@ -9160,7 +9160,7 @@ func TestInterpretEphemeralReferenceToOptional(t *testing.T) { var rs: @{Int: R} resource R { - pub let id: Int + access(all) let id: Int init(id: Int) { self.id = id @@ -9198,16 +9198,16 @@ func TestInterpretNestedDeclarationOrder(t *testing.T) { _, err := parseCheckAndInterpretWithOptions(t, ` - pub contract Test { + access(all) contract Test { - pub resource A { + access(all) resource A { - pub fun b(): @B { + access(all) fun b(): @B { return <-create B() } } - pub resource B {} + access(all) resource B {} init() { let a <- create A() @@ -9232,13 +9232,13 @@ func TestInterpretNestedDeclarationOrder(t *testing.T) { _, err := parseCheckAndInterpretWithOptions(t, ` - pub contract Test { + access(all) contract Test { - pub resource B {} + access(all) resource B {} - pub resource A { + access(all) resource A { - pub fun b(): @B { + access(all) fun b(): @B { return <-create B() } } @@ -9495,7 +9495,7 @@ func TestInterpretInternalAssignment(t *testing.T) { inter := parseCheckAndInterpret(t, ` struct S { - priv let xs: {String: Int} + access(self) let xs: {String: Int} init() { self.xs = {"a": 1} diff --git a/runtime/tests/interpreter/memory_metering_test.go b/runtime/tests/interpreter/memory_metering_test.go index c1e39556a8..64fde8e339 100644 --- a/runtime/tests/interpreter/memory_metering_test.go +++ b/runtime/tests/interpreter/memory_metering_test.go @@ -71,7 +71,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: [Int8] = [] let y: [[String]] = [[]] let z: [[[Bool]]] = [[[]]] @@ -104,7 +104,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() const script = ` - pub fun main() { + access(all) fun main() { let values: [[Int128]] = [[], [], []] for value in values { let a = value @@ -134,7 +134,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: [Int128] = [] x.contains(5) } @@ -157,7 +157,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: [Int8] = [] x.append(3) x.append(4) @@ -180,7 +180,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: [Int128] = [] // 2 data slabs x.append(0) // fits in existing slab x.append(1) // fits in existing slab @@ -210,7 +210,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { var i = 0; let x: [Int128] = [] // 2 data slabs while i < 120 { // should result in 4 meta data slabs and 60 slabs @@ -236,7 +236,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: [Int128] = [] x.insert(at:0, 3) x.insert(at:1, 3) @@ -258,7 +258,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: [Int8] = [] x.insert(at:0, 3) x.insert(at:1, 3) @@ -282,7 +282,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: [Int128] = [0, 1, 2, 3] // uses 2 data slabs and 1 metadata slab x[0] = 1 // adds 1 data and 1 metadata slab x[2] = 1 // adds 1 data and 1 metadata slab @@ -304,7 +304,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: [Int128] = [0, 1, 2] // uses 2 data slabs and 1 metadata slab x[0] = 1 // fits in existing slab x[2] = 1 // fits in existing slab @@ -326,7 +326,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: [Int8; 0] = [] let y: [Int8; 1] = [2] let z: [Int8; 2] = [2, 4] @@ -359,7 +359,7 @@ func TestInterpretArrayMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: [Int128] = [] // 2 data slabs x.insert(at:0, 3) // fits in existing slab x.insert(at:1, 3) // fits in existing slab @@ -396,7 +396,7 @@ func TestInterpretDictionaryMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: {Int8: String} = {} let y: {String: {Int8: String}} = {"a": {}} } @@ -428,7 +428,7 @@ func TestInterpretDictionaryMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let values: [{Int8: String}] = [{}, {}, {}] for value in values { let a = value @@ -459,7 +459,7 @@ func TestInterpretDictionaryMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: {Int8: String} = {} x.containsKey(5) } @@ -478,7 +478,7 @@ func TestInterpretDictionaryMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: {Int8: String} = {} x.insert(key: 5, "") x.insert(key: 4, "") @@ -504,7 +504,7 @@ func TestInterpretDictionaryMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: {Int8: String} = {} // 2 data slabs x.insert(key: 0, "") // fits in slab x.insert(key: 1, "") // fits in slab @@ -535,7 +535,7 @@ func TestInterpretDictionaryMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: {Int8: Int8} = {} // 2 data slabs x.insert(key: 0, 0) // all fit in slab x.insert(key: 1, 1) @@ -566,7 +566,7 @@ func TestInterpretDictionaryMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: {Int8: String} = {3: "a"} // 2 data slabs x[3] = "b" // fits in existing slab x[3] = "c" // fits in existing slab @@ -591,7 +591,7 @@ func TestInterpretDictionaryMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: {Int8: String} = {3: "a"} // 2 data slabs x[3] = "b" // fits in existing slab x[4] = "d" // fits in existing slab @@ -618,11 +618,11 @@ func TestInterpretCompositeMetering(t *testing.T) { t.Parallel() script := ` - pub struct S {} + access(all) struct S {} - pub resource R { - pub let a: String - pub let b: String + access(all) resource R { + access(all) let a: String + access(all) let b: String init(a: String, b: String) { self.a = a @@ -630,7 +630,7 @@ func TestInterpretCompositeMetering(t *testing.T) { } } - pub fun main() { + access(all) fun main() { let s = S() let r <- create R(a: "a", b: "b") destroy r @@ -661,9 +661,9 @@ func TestInterpretCompositeMetering(t *testing.T) { t.Parallel() script := ` - pub struct S {} + access(all) struct S {} - pub fun main() { + access(all) fun main() { let values = [S(), S(), S()] for value in values { let a = value @@ -697,7 +697,7 @@ func TestInterpretSimpleCompositeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(a: AuthAccount) { + access(all) fun main(a: AuthAccount) { } ` @@ -716,7 +716,7 @@ func TestInterpretSimpleCompositeMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(a: PublicAccount) { + access(all) fun main(a: PublicAccount) { } ` @@ -739,8 +739,8 @@ func TestInterpretCompositeFieldMetering(t *testing.T) { t.Parallel() script := ` - pub struct S {} - pub fun main() { + access(all) struct S {} + access(all) fun main() { let s = S() } ` @@ -762,13 +762,13 @@ func TestInterpretCompositeFieldMetering(t *testing.T) { t.Parallel() script := ` - pub struct S { - pub let a: String + access(all) struct S { + access(all) let a: String init(_ a: String) { self.a = a } } - pub fun main() { + access(all) fun main() { let s = S("a") } ` @@ -791,15 +791,15 @@ func TestInterpretCompositeFieldMetering(t *testing.T) { t.Parallel() script := ` - pub struct S { - pub let a: String - pub let b: String + access(all) struct S { + access(all) let a: String + access(all) let b: String init(_ a: String, _ b: String) { self.a = a self.b = b } } - pub fun main() { + access(all) fun main() { let s = S("a", "b") } ` @@ -826,7 +826,7 @@ func TestInterpretInterpretedFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() {} + access(all) fun main() {} ` meter := newTestMemoryGauge() @@ -843,7 +843,7 @@ func TestInterpretInterpretedFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let funcPointer = fun(a: String): String { return a } @@ -864,7 +864,7 @@ func TestInterpretInterpretedFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let funcPointer1 = fun(a: String): String { return a } @@ -893,11 +893,11 @@ func TestInterpretInterpretedFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub struct Foo { - pub fun bar() {} + access(all) struct Foo { + access(all) fun bar() {} } - pub fun main() {} + access(all) fun main() {} ` meter := newTestMemoryGauge() @@ -914,11 +914,11 @@ func TestInterpretInterpretedFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub struct Foo { + access(all) struct Foo { init() {} } - pub fun main() {} + access(all) fun main() {} ` meter := newTestMemoryGauge() @@ -941,7 +941,7 @@ func TestInterpretHostFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() {} + access(all) fun main() {} ` meter := newTestMemoryGauge() @@ -956,7 +956,7 @@ func TestInterpretHostFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let funcPointer1 = fun(a: String): String { return a } @@ -980,11 +980,11 @@ func TestInterpretHostFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub struct Foo { - pub fun bar() {} + access(all) struct Foo { + access(all) fun bar() {} } - pub fun main() {} + access(all) fun main() {} ` meter := newTestMemoryGauge() @@ -1001,11 +1001,11 @@ func TestInterpretHostFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub struct Foo { + access(all) struct Foo { init() {} } - pub fun main() {} + access(all) fun main() {} ` meter := newTestMemoryGauge() @@ -1022,7 +1022,7 @@ func TestInterpretHostFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let a = Int8(5) let b = CompositeType("PublicKey") @@ -1045,7 +1045,7 @@ func TestInterpretHostFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { assert(true) } ` @@ -1085,7 +1085,7 @@ func TestInterpretHostFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let publicKey = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.ECDSA_P256 @@ -1134,7 +1134,7 @@ func TestInterpretHostFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let publicKey1 = PublicKey( publicKey: "0102".decodeHex(), signatureAlgorithm: SignatureAlgorithm.ECDSA_P256 @@ -1192,11 +1192,11 @@ func TestInterpretBoundFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub struct Foo { - pub fun bar() {} + access(all) struct Foo { + access(all) fun bar() {} } - pub fun main() {} + access(all) fun main() {} ` meter := newTestMemoryGauge() @@ -1213,11 +1213,11 @@ func TestInterpretBoundFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub struct Foo { + access(all) struct Foo { init() {} } - pub fun main() {} + access(all) fun main() {} ` meter := newTestMemoryGauge() @@ -1234,11 +1234,11 @@ func TestInterpretBoundFunctionMetering(t *testing.T) { t.Parallel() script := ` - pub struct Foo { - pub fun bar() {} + access(all) struct Foo { + access(all) fun bar() {} } - pub fun main() { + access(all) fun main() { let foo = Foo() foo.bar() foo.bar() @@ -1265,7 +1265,7 @@ func TestInterpretOptionalValueMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: String? = "hello" } ` @@ -1283,7 +1283,7 @@ func TestInterpretOptionalValueMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: {Int8: String} = {1: "foo", 2: "bar"} let y = x[0] let z = x[1] @@ -1307,7 +1307,7 @@ func TestInterpretOptionalValueMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: {Int8: String} = {1: "foo", 2: "bar"} x[0] = "a" x[1] = "b" @@ -1330,7 +1330,7 @@ func TestInterpretOptionalValueMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let type: Type = Type() let a = OptionalType(type) } @@ -1358,7 +1358,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 } ` @@ -1377,7 +1377,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 + 2 } ` @@ -1396,7 +1396,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 - 2 } ` @@ -1415,7 +1415,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 * 2 } ` @@ -1434,7 +1434,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 / 2 } ` @@ -1453,7 +1453,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 % 2 } ` @@ -1472,7 +1472,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 | 2 } ` @@ -1491,7 +1491,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 ^ 2 } ` @@ -1510,7 +1510,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 & 2 } ` @@ -1529,7 +1529,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 << 2 } ` @@ -1548,7 +1548,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 >> 2 } ` @@ -1567,7 +1567,7 @@ func TestInterpretIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 let y = -x } @@ -1592,7 +1592,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt } ` @@ -1612,7 +1612,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt + 2 as UInt } ` @@ -1631,7 +1631,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 3 as UInt - 2 as UInt } ` @@ -1650,7 +1650,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt).saturatingSubtract(2 as UInt) } ` @@ -1669,7 +1669,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt * 2 as UInt } ` @@ -1688,7 +1688,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt / 2 as UInt } ` @@ -1707,7 +1707,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt % 2 as UInt } ` @@ -1726,7 +1726,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt | 2 as UInt } ` @@ -1745,7 +1745,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt ^ 2 as UInt } ` @@ -1764,7 +1764,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt & 2 as UInt } ` @@ -1783,7 +1783,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt << 2 as UInt } ` @@ -1802,7 +1802,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt >> 2 as UInt } ` @@ -1821,7 +1821,7 @@ func TestInterpretUIntMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 let y = -x } @@ -1846,7 +1846,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt8 } ` @@ -1866,7 +1866,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt8 + 2 as UInt8 } ` @@ -1887,7 +1887,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt8).saturatingAdd(2 as UInt8) } ` @@ -1908,7 +1908,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 3 as UInt8 - 2 as UInt8 } ` @@ -1929,7 +1929,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt8).saturatingSubtract(2 as UInt8) } ` @@ -1950,7 +1950,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt8 * 2 as UInt8 } ` @@ -1971,7 +1971,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt8).saturatingMultiply(2 as UInt8) } ` @@ -1992,7 +1992,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt8 / 2 as UInt8 } ` @@ -2013,7 +2013,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt8 % 2 as UInt8 } ` @@ -2034,7 +2034,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt8 | 2 as UInt8 } ` @@ -2055,7 +2055,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt8 ^ 2 as UInt8 } ` @@ -2076,7 +2076,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt8 & 2 as UInt8 } ` @@ -2098,7 +2098,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt8 << 2 as UInt8 } ` @@ -2119,7 +2119,7 @@ func TestInterpretUInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt8 >> 2 as UInt8 } ` @@ -2145,7 +2145,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt16 } ` @@ -2165,7 +2165,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt16 + 2 as UInt16 } ` @@ -2186,7 +2186,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt16).saturatingAdd(2 as UInt16) } ` @@ -2207,7 +2207,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 3 as UInt16 - 2 as UInt16 } ` @@ -2228,7 +2228,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt16).saturatingSubtract(2 as UInt16) } ` @@ -2249,7 +2249,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt16 * 2 as UInt16 } ` @@ -2270,7 +2270,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt16).saturatingMultiply(2 as UInt16) } ` @@ -2291,7 +2291,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt16 / 2 as UInt16 } ` @@ -2312,7 +2312,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt16 % 2 as UInt16 } ` @@ -2333,7 +2333,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt16 | 2 as UInt16 } ` @@ -2354,7 +2354,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt16 ^ 2 as UInt16 } ` @@ -2375,7 +2375,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt16 & 2 as UInt16 } ` @@ -2396,7 +2396,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt16 << 2 as UInt16 } ` @@ -2417,7 +2417,7 @@ func TestInterpretUInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt16 >> 2 as UInt16 } ` @@ -2443,7 +2443,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt32 } ` @@ -2463,7 +2463,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt32 + 2 as UInt32 } ` @@ -2484,7 +2484,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt32).saturatingAdd(2 as UInt32) } ` @@ -2505,7 +2505,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 3 as UInt32 - 2 as UInt32 } ` @@ -2526,7 +2526,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt32).saturatingSubtract(2 as UInt32) } ` @@ -2547,7 +2547,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt32 * 2 as UInt32 } ` @@ -2568,7 +2568,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt32).saturatingMultiply(2 as UInt32) } ` @@ -2589,7 +2589,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt32 / 2 as UInt32 } ` @@ -2610,7 +2610,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt32 % 2 as UInt32 } ` @@ -2631,7 +2631,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt32 | 2 as UInt32 } ` @@ -2652,7 +2652,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt32 ^ 2 as UInt32 } ` @@ -2673,7 +2673,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt32 & 2 as UInt32 } ` @@ -2694,7 +2694,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt32 << 2 as UInt32 } ` @@ -2715,7 +2715,7 @@ func TestInterpretUInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt32 >> 2 as UInt32 } ` @@ -2741,7 +2741,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt64 } ` @@ -2761,7 +2761,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt64 + 2 as UInt64 } ` @@ -2782,7 +2782,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt64).saturatingAdd(2 as UInt64) } ` @@ -2803,7 +2803,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 3 as UInt64 - 2 as UInt64 } ` @@ -2824,7 +2824,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt64).saturatingSubtract(2 as UInt64) } ` @@ -2845,7 +2845,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt64 * 2 as UInt64 } ` @@ -2866,7 +2866,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt64).saturatingMultiply(2 as UInt64) } ` @@ -2887,7 +2887,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt64 / 2 as UInt64 } ` @@ -2908,7 +2908,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt64 % 2 as UInt64 } ` @@ -2929,7 +2929,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt64 | 2 as UInt64 } ` @@ -2950,7 +2950,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt64 ^ 2 as UInt64 } ` @@ -2971,7 +2971,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt64 & 2 as UInt64 } ` @@ -2992,7 +2992,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt64 << 2 as UInt64 } ` @@ -3013,7 +3013,7 @@ func TestInterpretUInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt64 >> 2 as UInt64 } ` @@ -3039,7 +3039,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt128 } ` @@ -3059,7 +3059,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt128 + 2 as UInt128 } ` @@ -3080,7 +3080,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt128).saturatingAdd(2 as UInt128) } ` @@ -3101,7 +3101,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 3 as UInt128 - 2 as UInt128 } ` @@ -3122,7 +3122,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt128).saturatingSubtract(2 as UInt128) } ` @@ -3144,7 +3144,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt128 * 2 as UInt128 } ` @@ -3165,7 +3165,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt128).saturatingMultiply(2 as UInt128) } ` @@ -3186,7 +3186,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt128 / 2 as UInt128 } ` @@ -3207,7 +3207,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt128 % 2 as UInt128 } ` @@ -3228,7 +3228,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt128 | 2 as UInt128 } ` @@ -3249,7 +3249,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt128 ^ 2 as UInt128 } ` @@ -3270,7 +3270,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt128 & 2 as UInt128 } ` @@ -3291,7 +3291,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt128 << 2 as UInt128 } ` @@ -3312,7 +3312,7 @@ func TestInterpretUInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt128 >> 2 as UInt128 } ` @@ -3338,7 +3338,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt256 } ` @@ -3358,7 +3358,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt256 + 2 as UInt256 } ` @@ -3379,7 +3379,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt256).saturatingAdd(2 as UInt256) } ` @@ -3400,7 +3400,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 3 as UInt256 - 2 as UInt256 } ` @@ -3421,7 +3421,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt256).saturatingSubtract(2 as UInt256) } ` @@ -3442,7 +3442,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as UInt256 * 2 as UInt256 } ` @@ -3463,7 +3463,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = (1 as UInt256).saturatingMultiply(2 as UInt256) } ` @@ -3484,7 +3484,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt256 / 2 as UInt256 } ` @@ -3505,7 +3505,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt256 % 2 as UInt256 } ` @@ -3526,7 +3526,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt256 | 2 as UInt256 } ` @@ -3547,7 +3547,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt256 ^ 2 as UInt256 } ` @@ -3568,7 +3568,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt256 & 2 as UInt256 } ` @@ -3589,7 +3589,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt256 << 2 as UInt256 } ` @@ -3610,7 +3610,7 @@ func TestInterpretUInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as UInt256 >> 2 as UInt256 } ` @@ -3636,7 +3636,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 1 } ` @@ -3655,7 +3655,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 1 + 2 } ` @@ -3676,7 +3676,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 1 let y: Int8 = x.saturatingAdd(2) } @@ -3698,7 +3698,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 1 - 2 } ` @@ -3719,7 +3719,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 1 let y: Int8 = x.saturatingSubtract(2) } @@ -3741,7 +3741,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 1 * 2 } ` @@ -3762,7 +3762,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 1 let y: Int8 = x.saturatingMultiply(2) } @@ -3784,7 +3784,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 3 / 2 } ` @@ -3805,7 +3805,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 3 let y: Int8 = x.saturatingMultiply(2) } @@ -3827,7 +3827,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 3 % 2 } ` @@ -3848,7 +3848,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 1 let y: Int8 = -x } @@ -3870,7 +3870,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 3 | 2 } ` @@ -3891,7 +3891,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 3 ^ 2 } ` @@ -3912,7 +3912,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 3 & 2 } ` @@ -3933,7 +3933,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 3 << 2 } ` @@ -3954,7 +3954,7 @@ func TestInterpretInt8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int8 = 3 >> 2 } ` @@ -3981,7 +3981,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 1 } ` @@ -4000,7 +4000,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 1 + 2 } ` @@ -4021,7 +4021,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 1 let y: Int16 = x.saturatingAdd(2) } @@ -4043,7 +4043,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 1 - 2 } ` @@ -4064,7 +4064,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 1 let y: Int16 = x.saturatingSubtract(2) } @@ -4086,7 +4086,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 1 * 2 } ` @@ -4107,7 +4107,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 1 let y: Int16 = x.saturatingMultiply(2) } @@ -4129,7 +4129,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 3 / 2 } ` @@ -4150,7 +4150,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 3 let y: Int16 = x.saturatingMultiply(2) } @@ -4172,7 +4172,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 3 % 2 } ` @@ -4193,7 +4193,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 1 let y: Int16 = -x } @@ -4215,7 +4215,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 3 | 2 } ` @@ -4236,7 +4236,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 3 ^ 2 } ` @@ -4257,7 +4257,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 3 & 2 } ` @@ -4278,7 +4278,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 3 << 2 } ` @@ -4299,7 +4299,7 @@ func TestInterpretInt16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int16 = 3 >> 2 } ` @@ -4325,7 +4325,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 1 } ` @@ -4344,7 +4344,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 1 + 2 } ` @@ -4365,7 +4365,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 1 let y: Int32 = x.saturatingAdd(2) } @@ -4387,7 +4387,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 1 - 2 } ` @@ -4408,7 +4408,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 1 let y: Int32 = x.saturatingSubtract(2) } @@ -4430,7 +4430,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 1 * 2 } ` @@ -4451,7 +4451,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 1 let y: Int32 = x.saturatingMultiply(2) } @@ -4473,7 +4473,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 3 / 2 } ` @@ -4494,7 +4494,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 3 let y: Int32 = x.saturatingMultiply(2) } @@ -4516,7 +4516,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 3 % 2 } ` @@ -4537,7 +4537,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 1 let y: Int32 = -x } @@ -4559,7 +4559,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 3 | 2 } ` @@ -4580,7 +4580,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 3 ^ 2 } ` @@ -4601,7 +4601,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 3 & 2 } ` @@ -4622,7 +4622,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 3 << 2 } ` @@ -4643,7 +4643,7 @@ func TestInterpretInt32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int32 = 3 >> 2 } ` @@ -4669,7 +4669,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 1 } ` @@ -4688,7 +4688,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 1 + 2 } ` @@ -4709,7 +4709,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 1 let y: Int64 = x.saturatingAdd(2) } @@ -4731,7 +4731,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 1 - 2 } ` @@ -4752,7 +4752,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 1 let y: Int64 = x.saturatingSubtract(2) } @@ -4774,7 +4774,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 1 * 2 } ` @@ -4795,7 +4795,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 1 let y: Int64 = x.saturatingMultiply(2) } @@ -4817,7 +4817,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 3 / 2 } ` @@ -4838,7 +4838,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 3 let y: Int64 = x.saturatingMultiply(2) } @@ -4860,7 +4860,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 3 % 2 } ` @@ -4881,7 +4881,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 1 let y: Int64 = -x } @@ -4903,7 +4903,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 3 | 2 } ` @@ -4924,7 +4924,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 3 ^ 2 } ` @@ -4945,7 +4945,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 3 & 2 } ` @@ -4966,7 +4966,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 3 << 2 } ` @@ -4987,7 +4987,7 @@ func TestInterpretInt64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int64 = 3 >> 2 } ` @@ -5013,7 +5013,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 1 } ` @@ -5032,7 +5032,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 1 + 2 } ` @@ -5053,7 +5053,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 1 let y: Int128 = x.saturatingAdd(2) } @@ -5075,7 +5075,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 1 - 2 } ` @@ -5096,7 +5096,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 1 let y: Int128 = x.saturatingSubtract(2) } @@ -5118,7 +5118,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 1 * 2 } ` @@ -5139,7 +5139,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 1 let y: Int128 = x.saturatingMultiply(2) } @@ -5161,7 +5161,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 3 / 2 } ` @@ -5182,7 +5182,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 3 let y: Int128 = x.saturatingMultiply(2) } @@ -5204,7 +5204,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 3 % 2 } ` @@ -5225,7 +5225,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 1 let y: Int128 = -x } @@ -5247,7 +5247,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 3 | 2 } ` @@ -5268,7 +5268,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 3 ^ 2 } ` @@ -5289,7 +5289,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 3 & 2 } ` @@ -5310,7 +5310,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 3 << 2 } ` @@ -5331,7 +5331,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 3 >> 2 } ` @@ -5352,7 +5352,7 @@ func TestInterpretInt128Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int128 = 1 x == 1 x != 1 @@ -5382,7 +5382,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 1 } ` @@ -5401,7 +5401,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 1 + 2 } ` @@ -5422,7 +5422,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 1 let y: Int256 = x.saturatingAdd(2) } @@ -5444,7 +5444,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 1 - 2 } ` @@ -5465,7 +5465,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 1 let y: Int256 = x.saturatingSubtract(2) } @@ -5487,7 +5487,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 1 * 2 } ` @@ -5508,7 +5508,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 1 let y: Int256 = x.saturatingMultiply(2) } @@ -5530,7 +5530,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 3 / 2 } ` @@ -5551,7 +5551,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 3 let y: Int256 = x.saturatingMultiply(2) } @@ -5573,7 +5573,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 3 % 2 } ` @@ -5594,7 +5594,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 1 let y: Int256 = -x } @@ -5616,7 +5616,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 3 | 2 } ` @@ -5637,7 +5637,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 3 ^ 2 } ` @@ -5658,7 +5658,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 3 & 2 } ` @@ -5679,7 +5679,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 3 << 2 } ` @@ -5700,7 +5700,7 @@ func TestInterpretInt256Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Int256 = 3 >> 2 } ` @@ -5726,7 +5726,7 @@ func TestInterpretWord8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word8 } ` @@ -5747,7 +5747,7 @@ func TestInterpretWord8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word8 + 2 as Word8 } ` @@ -5768,7 +5768,7 @@ func TestInterpretWord8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 3 as Word8 - 2 as Word8 } ` @@ -5789,7 +5789,7 @@ func TestInterpretWord8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word8 * 2 as Word8 } ` @@ -5810,7 +5810,7 @@ func TestInterpretWord8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word8 / 2 as Word8 } ` @@ -5831,7 +5831,7 @@ func TestInterpretWord8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word8 % 2 as Word8 } ` @@ -5852,7 +5852,7 @@ func TestInterpretWord8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word8 | 2 as Word8 } ` @@ -5873,7 +5873,7 @@ func TestInterpretWord8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word8 ^ 2 as Word8 } ` @@ -5894,7 +5894,7 @@ func TestInterpretWord8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word8 & 2 as Word8 } ` @@ -5915,7 +5915,7 @@ func TestInterpretWord8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word8 << 2 as Word8 } ` @@ -5936,7 +5936,7 @@ func TestInterpretWord8Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word8 >> 2 as Word8 } ` @@ -5962,7 +5962,7 @@ func TestInterpretWord16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word16 } ` @@ -5982,7 +5982,7 @@ func TestInterpretWord16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word16 + 2 as Word16 } ` @@ -6003,7 +6003,7 @@ func TestInterpretWord16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 3 as Word16 - 2 as Word16 } ` @@ -6024,7 +6024,7 @@ func TestInterpretWord16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word16 * 2 as Word16 } ` @@ -6045,7 +6045,7 @@ func TestInterpretWord16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word16 / 2 as Word16 } ` @@ -6066,7 +6066,7 @@ func TestInterpretWord16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word16 % 2 as Word16 } ` @@ -6087,7 +6087,7 @@ func TestInterpretWord16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word16 | 2 as Word16 } ` @@ -6108,7 +6108,7 @@ func TestInterpretWord16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word16 ^ 2 as Word16 } ` @@ -6129,7 +6129,7 @@ func TestInterpretWord16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word16 & 2 as Word16 } ` @@ -6150,7 +6150,7 @@ func TestInterpretWord16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word16 << 2 as Word16 } ` @@ -6171,7 +6171,7 @@ func TestInterpretWord16Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word16 >> 2 as Word16 } ` @@ -6197,7 +6197,7 @@ func TestInterpretWord32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word32 } ` @@ -6217,7 +6217,7 @@ func TestInterpretWord32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word32 + 2 as Word32 } ` @@ -6238,7 +6238,7 @@ func TestInterpretWord32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 3 as Word32 - 2 as Word32 } ` @@ -6259,7 +6259,7 @@ func TestInterpretWord32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word32 * 2 as Word32 } ` @@ -6280,7 +6280,7 @@ func TestInterpretWord32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word32 / 2 as Word32 } ` @@ -6301,7 +6301,7 @@ func TestInterpretWord32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word32 % 2 as Word32 } ` @@ -6322,7 +6322,7 @@ func TestInterpretWord32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word32 | 2 as Word32 } ` @@ -6343,7 +6343,7 @@ func TestInterpretWord32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word32 ^ 2 as Word32 } ` @@ -6364,7 +6364,7 @@ func TestInterpretWord32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word32 & 2 as Word32 } ` @@ -6385,7 +6385,7 @@ func TestInterpretWord32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word32 << 2 as Word32 } ` @@ -6406,7 +6406,7 @@ func TestInterpretWord32Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word32 >> 2 as Word32 } ` @@ -6432,7 +6432,7 @@ func TestInterpretWord64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word64 } ` @@ -6452,7 +6452,7 @@ func TestInterpretWord64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word64 + 2 as Word64 } ` @@ -6473,7 +6473,7 @@ func TestInterpretWord64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 3 as Word64 - 2 as Word64 } ` @@ -6494,7 +6494,7 @@ func TestInterpretWord64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 1 as Word64 * 2 as Word64 } ` @@ -6515,7 +6515,7 @@ func TestInterpretWord64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word64 / 2 as Word64 } ` @@ -6536,7 +6536,7 @@ func TestInterpretWord64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word64 % 2 as Word64 } ` @@ -6557,7 +6557,7 @@ func TestInterpretWord64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word64 | 2 as Word64 } ` @@ -6578,7 +6578,7 @@ func TestInterpretWord64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word64 ^ 2 as Word64 } ` @@ -6599,7 +6599,7 @@ func TestInterpretWord64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word64 & 2 as Word64 } ` @@ -6620,7 +6620,7 @@ func TestInterpretWord64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word64 << 2 as Word64 } ` @@ -6641,7 +6641,7 @@ func TestInterpretWord64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 10 as Word64 >> 2 as Word64 } ` @@ -6667,7 +6667,7 @@ func TestInterpretStorageReferenceValueMetering(t *testing.T) { script := ` resource R {} - pub fun main(account: AuthAccount) { + access(all) fun main(account: AuthAccount) { account.borrow<&R>(from: /storage/r) } ` @@ -6692,7 +6692,7 @@ func TestInterpretEphemeralReferenceValueMetering(t *testing.T) { script := ` resource R {} - pub fun main(): &Int { + access(all) fun main(): &Int { let x: Int = 1 let y = &x as &Int return y @@ -6714,7 +6714,7 @@ func TestInterpretEphemeralReferenceValueMetering(t *testing.T) { script := ` resource R {} - pub fun main(): &Int { + access(all) fun main(): &Int { let x: Int? = 1 let y = &x as &Int? return y! @@ -6740,7 +6740,7 @@ func TestInterpretStringMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = "a" } ` @@ -6758,7 +6758,7 @@ func TestInterpretStringMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = "a" let y = x } @@ -6777,7 +6777,7 @@ func TestInterpretStringMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = "Ä°" } ` @@ -6795,7 +6795,7 @@ func TestInterpretStringMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = "ABC".toLower() } ` @@ -6814,7 +6814,7 @@ func TestInterpretStringMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = "Ä°".toLower() } ` @@ -6836,7 +6836,7 @@ func TestInterpretCharacterMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Character = "a" } ` @@ -6854,7 +6854,7 @@ func TestInterpretCharacterMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Character = "a" let y = x } @@ -6873,7 +6873,7 @@ func TestInterpretCharacterMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: String = "a" let y: Character = x[0] } @@ -6895,7 +6895,7 @@ func TestInterpretAddressValueMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Address = 0x0 } ` @@ -6912,7 +6912,7 @@ func TestInterpretAddressValueMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = Address(0x0) } ` @@ -6933,7 +6933,7 @@ func TestInterpretPathValueMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = /public/bar } ` @@ -6950,7 +6950,7 @@ func TestInterpretPathValueMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = PublicPath(identifier: "bar") } ` @@ -6973,7 +6973,7 @@ func TestInterpretStorageCapabilityValueMetering(t *testing.T) { script := ` resource R {} - pub fun main(account: AuthAccount) { + access(all) fun main(account: AuthAccount) { let r <- create R() account.save(<-r, to: /storage/r) let x = account.link<&R>(/public/cap, target: /storage/r) @@ -6997,7 +6997,7 @@ func TestInterpretStorageCapabilityValueMetering(t *testing.T) { script := ` resource R {} - pub fun main(account: AuthAccount) { + access(all) fun main(account: AuthAccount) { let r <- create R() account.save(<-r, to: /storage/r) let x = account.link<&R>(/public/cap, target: /storage/r) @@ -7025,7 +7025,7 @@ func TestInterpretPathLinkValueMetering(t *testing.T) { script := ` resource R {} - pub fun main(account: AuthAccount) { + access(all) fun main(account: AuthAccount) { account.link<&R>(/public/cap, target: /private/p) } ` @@ -7051,7 +7051,7 @@ func TestInterpretAccountLinkValueMetering(t *testing.T) { const script = ` #allowAccountLinking - pub fun main(account: AuthAccount) { + access(all) fun main(account: AuthAccount) { account.linkAccount(/private/cap) } ` @@ -7087,7 +7087,7 @@ func TestInterpretTypeValueMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let t: Type = Type() } ` @@ -7104,7 +7104,7 @@ func TestInterpretTypeValueMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let t: Type = ConstantSizedArrayType(type: Type(), size: 2) } ` @@ -7122,7 +7122,7 @@ func TestInterpretTypeValueMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let v = 5 let t: Type = v.getType() } @@ -7147,7 +7147,7 @@ func TestInterpretVariableMetering(t *testing.T) { var a = 3 let b = false - pub fun main() { + access(all) fun main() { } ` @@ -7164,7 +7164,7 @@ func TestInterpretVariableMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(a: String, b: Bool) { + access(all) fun main(a: String, b: Bool) { } ` @@ -7185,7 +7185,7 @@ func TestInterpretVariableMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { var x = fun (x: String, y: Bool) {} } ` @@ -7202,7 +7202,7 @@ func TestInterpretVariableMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { var x = fun (x: String, y: Bool) {} x("", false) } @@ -7226,7 +7226,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 1.4 } ` @@ -7246,7 +7246,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 1.4 + 2.5 } ` @@ -7268,7 +7268,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 1.4 let y: Fix64 = x.saturatingAdd(2.5) } @@ -7291,7 +7291,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 1.4 - 2.5 } ` @@ -7313,7 +7313,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 1.4 let y: Fix64 = x.saturatingSubtract(2.5) } @@ -7336,7 +7336,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 1.4 * 2.5 } ` @@ -7358,7 +7358,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 1.4 let y: Fix64 = x.saturatingMultiply(2.5) } @@ -7381,7 +7381,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 3.4 / 2.5 } ` @@ -7403,7 +7403,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 3.4 let y: Fix64 = x.saturatingMultiply(2.5) } @@ -7426,7 +7426,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 3.4 % 2.5 } ` @@ -7451,7 +7451,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 1.4 let y: Fix64 = -x } @@ -7475,7 +7475,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: FixedPoint = -1.4 } ` @@ -7495,7 +7495,7 @@ func TestInterpretFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Fix64 = 1.0 x == 1.0 x != 1.0 @@ -7525,7 +7525,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: UFix64 = 1.4 } ` @@ -7545,7 +7545,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: UFix64 = 1.4 + 2.5 } ` @@ -7567,7 +7567,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: UFix64 = 1.4 let y: UFix64 = x.saturatingAdd(2.5) } @@ -7590,7 +7590,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: UFix64 = 2.5 - 1.4 } ` @@ -7612,7 +7612,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: UFix64 = 1.4 let y: UFix64 = x.saturatingSubtract(2.5) } @@ -7635,7 +7635,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: UFix64 = 1.4 * 2.5 } ` @@ -7657,7 +7657,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: UFix64 = 1.4 let y: UFix64 = x.saturatingMultiply(2.5) } @@ -7680,7 +7680,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: UFix64 = 3.4 / 2.5 } ` @@ -7702,7 +7702,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: UFix64 = 3.4 let y: UFix64 = x.saturatingMultiply(2.5) } @@ -7725,7 +7725,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: UFix64 = 3.4 % 2.5 } ` @@ -7750,7 +7750,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: FixedPoint = 1.4 } ` @@ -7770,7 +7770,7 @@ func TestInterpretUFix64Metering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: UFix64 = 1.0 x == 1.0 x != 1.0 @@ -7798,11 +7798,11 @@ func TestInterpretTokenMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { var x: String = "hello" } - pub struct foo { + access(all) struct foo { var x: Int init() { @@ -7816,7 +7816,7 @@ func TestInterpretTokenMetering(t *testing.T) { _, err := inter.Invoke("main") require.NoError(t, err) - assert.Equal(t, uint64(32), meter.getMemory(common.MemoryKindTypeToken)) + assert.Equal(t, uint64(38), meter.getMemory(common.MemoryKindTypeToken)) assert.Equal(t, uint64(25), meter.getMemory(common.MemoryKindSpaceToken)) assert.Equal(t, uint64(0), meter.getMemory(common.MemoryKindRawString)) }) @@ -7825,7 +7825,7 @@ func TestInterpretTokenMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { var a: [String] = [] var b = 4 + 6 var c = true && false != false @@ -7837,7 +7837,7 @@ func TestInterpretTokenMetering(t *testing.T) { _, err := inter.Invoke("main") require.NoError(t, err) - assert.Equal(t, uint64(36), meter.getMemory(common.MemoryKindTypeToken)) + assert.Equal(t, uint64(39), meter.getMemory(common.MemoryKindTypeToken)) assert.Equal(t, uint64(31), meter.getMemory(common.MemoryKindSpaceToken)) assert.Equal(t, uint64(0), meter.getMemory(common.MemoryKindRawString)) }) @@ -7851,14 +7851,14 @@ func TestInterpretTokenMetering(t *testing.T) { */ // single line comment - pub fun main() {} + access(all) fun main() {} ` meter := newTestMemoryGauge() inter := parseCheckAndInterpretWithMemoryMetering(t, script, meter) _, err := inter.Invoke("main") require.NoError(t, err) - assert.Equal(t, uint64(11), meter.getMemory(common.MemoryKindTypeToken)) + assert.Equal(t, uint64(14), meter.getMemory(common.MemoryKindTypeToken)) assert.Equal(t, uint64(7), meter.getMemory(common.MemoryKindSpaceToken)) assert.Equal(t, uint64(0), meter.getMemory(common.MemoryKindRawString)) }) @@ -7867,7 +7867,7 @@ func TestInterpretTokenMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { var a = 1 var b = 0b1 var c = 0o1 @@ -7880,7 +7880,7 @@ func TestInterpretTokenMetering(t *testing.T) { _, err := inter.Invoke("main") require.NoError(t, err) - assert.Equal(t, uint64(27), meter.getMemory(common.MemoryKindTypeToken)) + assert.Equal(t, uint64(30), meter.getMemory(common.MemoryKindTypeToken)) assert.Equal(t, uint64(26), meter.getMemory(common.MemoryKindSpaceToken)) assert.Equal(t, uint64(0), meter.getMemory(common.MemoryKindRawString)) }) @@ -7897,7 +7897,7 @@ func TestInterpreterStringLocationMetering(t *testing.T) { script := ` struct S {} - pub fun main(account: AuthAccount) { + access(all) fun main(account: AuthAccount) { let s = CompositeType("") } ` @@ -7914,7 +7914,7 @@ func TestInterpreterStringLocationMetering(t *testing.T) { script = ` struct S {} - pub fun main(account: AuthAccount) { + access(all) fun main(account: AuthAccount) { let s = CompositeType("S.test.S") } ` @@ -7943,7 +7943,7 @@ func TestInterpretIdentifierMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let foo = 4 let bar = 5 } @@ -7962,7 +7962,7 @@ func TestInterpretIdentifierMetering(t *testing.T) { t.Parallel() script := ` - pub fun main(foo: String, bar: String) { + access(all) fun main(foo: String, bar: String) { } ` meter := newTestMemoryGauge() @@ -7983,9 +7983,9 @@ func TestInterpretIdentifierMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() {} + access(all) fun main() {} - pub struct foo { + access(all) struct foo { var x: String var y: String @@ -7994,7 +7994,7 @@ func TestInterpretIdentifierMetering(t *testing.T) { self.y = "b" } - pub fun bar() {} + access(all) fun bar() {} } ` @@ -8010,7 +8010,7 @@ func TestInterpretIdentifierMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { // 2 - 'main', empty-return-type + access(all) fun main() { // 2 - 'main', empty-return-type let foo = ["a", "b"] // 1 foo.length // 3 - 'foo', 'length', constant field resolver foo.length // 3 - 'foo', 'length', constant field resolver (not re-used) @@ -8038,7 +8038,7 @@ func TestInterpretInterfaceStaticType(t *testing.T) { script := ` struct interface I {} - pub fun main() { + access(all) fun main() { let type = Type() RestrictedType( @@ -8066,7 +8066,7 @@ func TestInterpretFunctionStaticType(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { FunctionType(parameters: [], return: Type()) } ` @@ -8084,9 +8084,9 @@ func TestInterpretFunctionStaticType(t *testing.T) { t.Parallel() script := ` - pub fun hello() {} + access(all) fun hello() {} - pub fun main() { + access(all) fun main() { let a = [hello] } ` @@ -8104,11 +8104,11 @@ func TestInterpretFunctionStaticType(t *testing.T) { t.Parallel() script := ` - pub struct S { + access(all) struct S { fun naught() {} } - pub fun main() { + access(all) fun main() { let x = S() let y = x.naught } @@ -8127,11 +8127,11 @@ func TestInterpretFunctionStaticType(t *testing.T) { t.Parallel() script := ` - pub struct S { + access(all) struct S { fun naught() {} } - pub fun main() { + access(all) fun main() { let x = S() x.naught.isInstance(Type()) } @@ -8154,15 +8154,15 @@ func TestInterpretASTMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { foo(a: "hello", b: 23) bar("hello", 23) } - pub fun foo(a: String, b: Int) { + access(all) fun foo(a: String, b: Int) { } - pub fun bar(_ a: String, _ b: Int) { + access(all) fun bar(_ a: String, _ b: Int) { } ` meter := newTestMemoryGauge() @@ -8176,7 +8176,7 @@ func TestInterpretASTMetering(t *testing.T) { t.Run("blocks", func(t *testing.T) { script := ` - pub fun main() { + access(all) fun main() { var i = 0 if i != 0 { i = 0 @@ -8211,26 +8211,26 @@ func TestInterpretASTMetering(t *testing.T) { script := ` import Foo from 0x42 - pub let x = 1 - pub var y = 2 + access(all) let x = 1 + access(all) var y = 2 - pub fun main() { + access(all) fun main() { var z = 3 } - pub fun foo(_ x: String, _ y: Int) {} + access(all) fun foo(_ x: String, _ y: Int) {} - pub struct A { - pub var a: String + access(all) struct A { + access(all) var a: String init() { self.a = "hello" } } - pub struct interface B {} + access(all) struct interface B {} - pub resource C { + access(all) resource C { let a: Int init() { @@ -8238,12 +8238,12 @@ func TestInterpretASTMetering(t *testing.T) { } } - pub resource interface D {} + access(all) resource interface D {} - pub enum E: Int8 { - pub case a - pub case b - pub case c + access(all) enum E: Int8 { + access(all) case a + access(all) case b + access(all) case c } transaction {} @@ -8253,7 +8253,7 @@ func TestInterpretASTMetering(t *testing.T) { importedChecker, err := checker.ParseAndCheckWithOptions(t, ` - pub let Foo = 1 + access(all) let Foo = 1 `, checker.ParseAndCheckOptions{ Location: utils.ImportedLocation, @@ -8317,7 +8317,7 @@ func TestInterpretASTMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { var a = 5 while a < 10 { // while @@ -8345,13 +8345,13 @@ func TestInterpretASTMetering(t *testing.T) { } } - pub fun foo(): Int { + access(all) fun foo(): Int { return 5 // return } resource bar {} - pub contract Events { + access(all) contract Events { event FooEvent(x: Int, y: Int) fun events() { @@ -8405,7 +8405,7 @@ func TestInterpretASTMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { var a = 5 // integer expr var b = 1.2 + 2.3 // binary, fixed-point expr var c = !true // unary, boolean expr @@ -8469,7 +8469,7 @@ func TestInterpretASTMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { var a: Int = 5 // nominal type var b: String? = "hello" // optional type var c: [Int; 2] = [1, 2] // constant sized type @@ -8511,24 +8511,24 @@ func TestInterpretASTMetering(t *testing.T) { t.Run("position info", func(t *testing.T) { script := ` - pub let x = 1 - pub var y = 2 + access(all) let x = 1 + access(all) var y = 2 - pub fun main() { + access(all) fun main() { var z = 3 } - pub fun foo(_ x: String, _ y: Int) {} + access(all) fun foo(_ x: String, _ y: Int) {} - pub struct A { - pub var a: String + access(all) struct A { + access(all) var a: String init() { self.a = "hello" } } - pub struct interface B {} + access(all) struct interface B {} ` meter := newTestMemoryGauge() @@ -8538,8 +8538,8 @@ func TestInterpretASTMetering(t *testing.T) { _, err := inter.Invoke("main") require.NoError(t, err) - assert.Equal(t, uint64(230), meter.getMemory(common.MemoryKindPosition)) - assert.Equal(t, uint64(125), meter.getMemory(common.MemoryKindRange)) + assert.Equal(t, uint64(272), meter.getMemory(common.MemoryKindPosition)) + assert.Equal(t, uint64(146), meter.getMemory(common.MemoryKindRange)) }) t.Run("locations", func(t *testing.T) { @@ -8550,8 +8550,8 @@ func TestInterpretASTMetering(t *testing.T) { importedChecker, err := checker.ParseAndCheckWithOptions(t, ` - pub let A = 1 - pub let B = 1 + access(all) let A = 1 + access(all) let B = 1 `, checker.ParseAndCheckOptions{ Location: utils.ImportedLocation, @@ -8602,7 +8602,7 @@ func TestInterpretVariableActivationMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() {} + access(all) fun main() {} ` meter := newTestMemoryGauge() @@ -8620,11 +8620,11 @@ func TestInterpretVariableActivationMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { foo(a: "hello", b: 23) } - pub fun foo(a: String, b: Int) { + access(all) fun foo(a: String, b: Int) { } ` @@ -8643,7 +8643,7 @@ func TestInterpretVariableActivationMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { if true { let a = 1 } @@ -8668,16 +8668,16 @@ func TestInterpretStaticTypeConversionMetering(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let a: {Int: AnyStruct{Foo}} = {} // dictionary + restricted let b: [&Int] = [] // variable-sized + reference let c: [Int?; 2] = [1, 2] // constant-sized + optional let d: [Capability<&Bar>] = [] // capability + variable-sized + reference } - pub struct interface Foo {} + access(all) struct interface Foo {} - pub struct Bar: Foo {} + access(all) struct Bar: Foo {} ` meter := newTestMemoryGauge() @@ -8702,7 +8702,7 @@ func TestInterpretStorageMapMetering(t *testing.T) { script := ` resource R {} - pub fun main(account: AuthAccount) { + access(all) fun main(account: AuthAccount) { let r <- create R() account.save(<-r, to: /storage/r) account.link<&R>(/public/cap, target: /storage/r) @@ -8928,7 +8928,7 @@ func TestInterpretValueStringConversion(t *testing.T) { t.Parallel() script := fmt.Sprintf(` - pub fun main() { + access(all) fun main() { let x = %s log(x) } @@ -8949,7 +8949,7 @@ func TestInterpretValueStringConversion(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = Foo() log(x) } @@ -8969,7 +8969,7 @@ func TestInterpretValueStringConversion(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = 4 log(&x as &AnyStruct) } @@ -8982,7 +8982,7 @@ func TestInterpretValueStringConversion(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = fun(a: String, b: Bool) {} log(&x as &AnyStruct) } @@ -8995,13 +8995,13 @@ func TestInterpretValueStringConversion(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x = Foo() log(x.bar) } struct Foo { - pub fun bar(a: String, b: Bool) {} + access(all) fun bar(a: String, b: Bool) {} } ` @@ -9012,7 +9012,7 @@ func TestInterpretValueStringConversion(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { let x: Void = foo() log(x) } @@ -9027,7 +9027,7 @@ func TestInterpretValueStringConversion(t *testing.T) { t.Parallel() script := ` - pub fun main(a: Capability<&{Foo}>) { + access(all) fun main(a: Capability<&{Foo}>) { log(a) } @@ -9054,7 +9054,7 @@ func TestInterpretValueStringConversion(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { log(Type()) } ` @@ -9143,7 +9143,7 @@ func TestInterpretStaticTypeStringConversion(t *testing.T) { } script := fmt.Sprintf(` - pub fun main() { + access(all) fun main() { log(Type<%s>()) }`, typeName, @@ -9203,7 +9203,7 @@ func TestInterpretStaticTypeStringConversion(t *testing.T) { script := fmt.Sprintf(` entitlement X - pub fun main() { + access(all) fun main() { log(Type<%s>()) } `, @@ -9223,7 +9223,7 @@ func TestInterpretStaticTypeStringConversion(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { log(Type()) } @@ -9242,7 +9242,7 @@ func TestInterpretStaticTypeStringConversion(t *testing.T) { t.Parallel() script := ` - pub fun main() { + access(all) fun main() { log(Type()) } diff --git a/runtime/tests/interpreter/metering_test.go b/runtime/tests/interpreter/metering_test.go index 8929ebc74b..f7f5d303b7 100644 --- a/runtime/tests/interpreter/metering_test.go +++ b/runtime/tests/interpreter/metering_test.go @@ -38,7 +38,7 @@ func TestInterpretStatementHandler(t *testing.T) { importedChecker, err := checker.ParseAndCheckWithOptions(t, ` - pub fun a() { + access(all) fun a() { true true } @@ -165,7 +165,7 @@ func TestInterpretLoopIterationHandler(t *testing.T) { importedChecker, err := checker.ParseAndCheckWithOptions(t, ` - pub fun a() { + access(all) fun a() { var i = 1 while i <= 4 { i = i + 1 @@ -292,9 +292,9 @@ func TestInterpretFunctionInvocationHandler(t *testing.T) { importedChecker, err := checker.ParseAndCheckWithOptions(t, ` - pub fun a() {} + access(all) fun a() {} - pub fun b() { + access(all) fun b() { true true a() @@ -312,7 +312,7 @@ func TestInterpretFunctionInvocationHandler(t *testing.T) { ` import b from "imported" - pub fun c() { + access(all) fun c() { true true b() @@ -320,7 +320,7 @@ func TestInterpretFunctionInvocationHandler(t *testing.T) { true } - pub fun d() { + access(all) fun d() { true true c() diff --git a/runtime/tests/interpreter/reference_test.go b/runtime/tests/interpreter/reference_test.go index 30a4a89e98..0aca7b6001 100644 --- a/runtime/tests/interpreter/reference_test.go +++ b/runtime/tests/interpreter/reference_test.go @@ -100,13 +100,13 @@ func TestInterpretContainerVariance(t *testing.T) { inter := parseCheckAndInterpret(t, ` struct S1 { - pub fun getSecret(): Int { + access(all) fun getSecret(): Int { return 0 } } struct S2 { - priv fun getSecret(): Int { + access(self) fun getSecret(): Int { return 42 } } @@ -135,13 +135,13 @@ func TestInterpretContainerVariance(t *testing.T) { inter := parseCheckAndInterpret(t, ` struct S1 { - pub fun getSecret(): Int { + access(all) fun getSecret(): Int { return 0 } } struct S2 { - priv fun getSecret(): Int { + access(self) fun getSecret(): Int { return 42 } } @@ -177,7 +177,7 @@ func TestInterpretContainerVariance(t *testing.T) { } struct S2 { - priv var value: Int + access(self) var value: Int init() { self.value = 1 @@ -216,7 +216,7 @@ func TestInterpretContainerVariance(t *testing.T) { } struct S2 { - priv var value: Int + access(self) var value: Int init() { self.value = 1 @@ -255,7 +255,7 @@ func TestInterpretContainerVariance(t *testing.T) { struct S2 { // field is only publicly readable, not writeable - pub var value: Int + access(all) var value: Int init() { self.value = 0 @@ -299,7 +299,7 @@ func TestInterpretContainerVariance(t *testing.T) { struct S2 { // field is only publicly readable, not writeable - pub var value: Int + access(all) var value: Int init() { self.value = 0 @@ -566,6 +566,10 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { resource R { access(all) var id: Int + access(all) fun setID(_ id: Int) { + self.id = id + } + init() { self.id = 1 } @@ -579,7 +583,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { account.save(<-r, to: /storage/r) // Update the reference - ref.id = 2 + ref.setID(2) }`, sema.Config{}, errorHandler(t), @@ -636,6 +640,10 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { resource R { access(all) var id: Int + access(all) fun setID(_ id: Int) { + self.id = id + } + init() { self.id = 1 } @@ -651,7 +659,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { let movedR <- target.remove(at: 0) // Update the reference - ref.id = 2 + ref.setID(2) destroy movedR } @@ -693,6 +701,10 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { resource R { access(all) var id: Int + access(all) fun setID(_ id: Int) { + self.id = id + } + init() { self.id = 1 } @@ -706,7 +718,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { let r2 <- r1 // Update the reference - ref.id = 2 + ref.setID(2) destroy r2 }`, @@ -730,6 +742,10 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { resource R { access(all) var id: Int + access(all) fun setID(_ id: Int) { + self.id = id + } + init() { self.id = 1 } @@ -745,7 +761,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { target2.append(<- target1.remove(at: 0)) // Update the reference - ref.id = 2 + ref.setID(2) } `) @@ -802,6 +818,10 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { resource R { access(all) var id: Int + access(all) fun setID(_ id: Int) { + self.id = id + } + init() { self.id = 1 } @@ -824,7 +844,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { target.append(<- movedR) // Update the reference - ref.id = 2 + ref.setID(2) return target[1].id } @@ -870,6 +890,10 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { resource R { access(all) var id: Int + access(all) fun setID(_ id: Int) { + self.id = id + } + init() { self.id = 1 } @@ -883,7 +907,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { let r2 <- account.load<@R>(from: /storage/r)! - r1Ref.id = 2 + r1Ref.setID(2) destroy r2 }`, sema.Config{}, @@ -1003,10 +1027,10 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { inter := parseCheckAndInterpret( t, ` - pub fun test() { + access(all) fun test() { let r <- create R() let s = S() - s.b = &r as &R + s.setB(&r as &R) let x = s.b! // get reference from a struct field let movedR <- r // move the resource @@ -1015,17 +1039,21 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { destroy movedR } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 } } - pub struct S { + access(all) struct S { access(all) var b: &R? + access(all) fun setB(_ b: &R) { + self.b = b + } + init() { self.b = nil } @@ -1044,29 +1072,32 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { inter := parseCheckAndInterpret( t, ` - pub fun test() { + access(all) fun test() { let r <- create R() let s = S() - s.b = &r as &R - s.b = &r as &R // assign reference to a struct field + s.setB(&r as &R) // assign reference to a struct field let movedR <- r // move the resource s.b!.a destroy movedR } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 } } - pub struct S { + access(all) struct S { access(all) var b: &R? + access(all) fun setB(_ b: &R) { + self.b = b + } + init() { self.b = nil } @@ -1088,6 +1119,10 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { resource R { access(all) var id: Int + access(all) fun setID(_ id: Int) { + self.id = id + } + init() { self.id = 1 } @@ -1101,7 +1136,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { let r <- array.remove(at: 0) // Update the reference - ref.id = 2 + ref.setID(2) destroy r destroy array @@ -1123,6 +1158,10 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { resource R { access(all) var id: Int + access(all) fun setID(_ id: Int) { + self.id = id + } + init() { self.id = 1 } @@ -1136,7 +1175,7 @@ func TestInterpretResourceReferenceInvalidationOnMove(t *testing.T) { let r <- dictionary.remove(key: 0) // Update the reference - ref.id = 2 + ref.setID(2) destroy r destroy dictionary @@ -1175,6 +1214,10 @@ func TestInterpretResourceReferenceInvalidationOnDestroy(t *testing.T) { resource R { access(all) var id: Int + access(all) fun setID(_ id: Int) { + self.id = id + } + init() { self.id = 1 } @@ -1187,7 +1230,7 @@ func TestInterpretResourceReferenceInvalidationOnDestroy(t *testing.T) { destroy r // Update the reference - ref.id = 2 + ref.setID(2) }`, sema.Config{}, errorHandler(t), @@ -1205,27 +1248,31 @@ func TestInterpretResourceReferenceInvalidationOnDestroy(t *testing.T) { inter := parseCheckAndInterpret( t, ` - pub fun test() { + access(all) fun test() { let r <- create R() let s = S() - s.b = &r as &R + s.setB(&r as &R) let x = s.b! // get reference from a struct field destroy r // destroy the resource x.a } - pub resource R { - pub let a: Int + access(all) resource R { + access(all) let a: Int init() { self.a = 5 } } - pub struct S { + access(all) struct S { access(all) var b: &R? + access(all) fun setB(_ b: &R) { + self.b = b + } + init() { self.b = nil } diff --git a/runtime/tests/interpreter/resources_test.go b/runtime/tests/interpreter/resources_test.go index 3fb54e4c21..95ad8ec71b 100644 --- a/runtime/tests/interpreter/resources_test.go +++ b/runtime/tests/interpreter/resources_test.go @@ -402,6 +402,15 @@ func TestInterpretImplicitResourceRemovalFromContainer(t *testing.T) { resource R1 { access(all) var r2s: @{Int: R2} + access(all) fun setR2(_ i: Int, _ r: @R2) { + self.r2s[i] <-! r + } + + access(all) fun move(_ i: Int, _ r: @R2?): @R2? { + let optR2 <- self.r2s[i] <- r + return <- optR2 + } + init() { self.r2s <- {} } @@ -416,11 +425,11 @@ func TestInterpretImplicitResourceRemovalFromContainer(t *testing.T) { } fun test(r1: &R1): String? { - r1.r2s[0] <-! create R2() + r1.setR2(0, <- create R2()) // The second assignment should not lead to the resource being cleared, // it must be fully moved out of this container before, // not just assigned to the new variable - let optR2 <- r1.r2s[0] <- nil + let optR2 <- r1.move(0, nil) let value = optR2?.value destroy optR2 return value @@ -2135,7 +2144,7 @@ func TestInterpreterResourcePreCondition(t *testing.T) { resource S {} struct interface Receiver { - pub fun deposit(from: @S) { + access(all) fun deposit(from: @S) { post { from != nil: "" } @@ -2143,7 +2152,7 @@ func TestInterpreterResourcePreCondition(t *testing.T) { } struct Vault: Receiver { - pub fun deposit(from: @S) { + access(all) fun deposit(from: @S) { destroy from } } @@ -2165,7 +2174,7 @@ func TestInterpreterResourcePostCondition(t *testing.T) { resource S {} struct interface Receiver { - pub fun deposit(from: @S) { + access(all) fun deposit(from: @S) { post { from != nil: "" } @@ -2173,7 +2182,7 @@ func TestInterpreterResourcePostCondition(t *testing.T) { } struct Vault: Receiver { - pub fun deposit(from: @S) { + access(all) fun deposit(from: @S) { destroy from } } @@ -2195,7 +2204,7 @@ func TestInterpreterResourcePreAndPostCondition(t *testing.T) { resource S {} struct interface Receiver { - pub fun deposit(from: @S) { + access(all) fun deposit(from: @S) { pre { from != nil: "" } @@ -2206,7 +2215,7 @@ func TestInterpreterResourcePreAndPostCondition(t *testing.T) { } struct Vault: Receiver { - pub fun deposit(from: @S) { + access(all) fun deposit(from: @S) { pre { from != nil: "" } @@ -2234,7 +2243,7 @@ func TestInterpreterResourceConditionAdditionalParam(t *testing.T) { resource S {} struct interface Receiver { - pub fun deposit(from: @S, other: UInt64) { + access(all) fun deposit(from: @S, other: UInt64) { pre { from != nil: "" } @@ -2245,7 +2254,7 @@ func TestInterpreterResourceConditionAdditionalParam(t *testing.T) { } struct Vault: Receiver { - pub fun deposit(from: @S, other: UInt64) { + access(all) fun deposit(from: @S, other: UInt64) { pre { from != nil: "" } @@ -2273,7 +2282,7 @@ func TestInterpreterResourceDoubleWrappedCondition(t *testing.T) { resource S {} struct interface A { - pub fun deposit(from: @S) { + access(all) fun deposit(from: @S) { pre { from != nil: "" } @@ -2284,7 +2293,7 @@ func TestInterpreterResourceDoubleWrappedCondition(t *testing.T) { } struct interface B { - pub fun deposit(from: @S) { + access(all) fun deposit(from: @S) { pre { from != nil: "" } @@ -2295,7 +2304,7 @@ func TestInterpreterResourceDoubleWrappedCondition(t *testing.T) { } struct Vault: A, B { - pub fun deposit(from: @S) { + access(all) fun deposit(from: @S) { pre { from != nil: "" } @@ -2327,7 +2336,7 @@ func TestInterpretOptionalResourceReference(t *testing.T) { true, ` resource R { - pub let id: Int + access(all) let id: Int init() { self.id = 1 @@ -2365,7 +2374,7 @@ func TestInterpretArrayOptionalResourceReference(t *testing.T) { true, ` resource R { - pub let id: Int + access(all) let id: Int init() { self.id = 1 @@ -2398,7 +2407,7 @@ func TestInterpretResourceDestroyedInPreCondition(t *testing.T) { _, err := parseCheckAndInterpretWithOptions(t, ` resource interface I { - pub fun receiveResource(_ r: @Bar) { + access(all) fun receiveResource(_ r: @Bar) { pre { destroyResource(<-r) } @@ -2411,7 +2420,7 @@ func TestInterpretResourceDestroyedInPreCondition(t *testing.T) { } resource Foo: I { - pub fun receiveResource(_ r: @Bar) { + access(all) fun receiveResource(_ r: @Bar) { destroy r } } diff --git a/runtime/tests/interpreter/runtimetype_test.go b/runtime/tests/interpreter/runtimetype_test.go index 180af91dcc..6a9b69d342 100644 --- a/runtime/tests/interpreter/runtimetype_test.go +++ b/runtime/tests/interpreter/runtimetype_test.go @@ -576,7 +576,7 @@ func TestInterpretRestrictedType(t *testing.T) { struct B : S {} struct interface S2 { - pub let foo : Int + access(all) let foo : Int } let a = RestrictedType(identifier: "S.test.A", restrictions: ["S.test.R"])! diff --git a/runtime/tests/interpreter/uuid_test.go b/runtime/tests/interpreter/uuid_test.go index d1aaf27a11..ed234ebdef 100644 --- a/runtime/tests/interpreter/uuid_test.go +++ b/runtime/tests/interpreter/uuid_test.go @@ -38,9 +38,9 @@ func TestInterpretResourceUUID(t *testing.T) { importedChecker, err := checker.ParseAndCheckWithOptions(t, ` - pub resource R {} + access(all) resource R {} - pub fun createR(): @R { + access(all) fun createR(): @R { return <- create R() } `, @@ -54,9 +54,9 @@ func TestInterpretResourceUUID(t *testing.T) { ` import createR from "imported" - pub resource R2 {} + access(all) resource R2 {} - pub fun createRs(): @[AnyResource] { + access(all) fun createRs(): @[AnyResource] { return <- [ <- (createR() as @AnyResource), <- create R2() From 5bb3db93fe8dab63b9bdf91dcf12b8fb1b6e62af Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Tue, 6 Jun 2023 15:42:25 -0400 Subject: [PATCH 09/20] update misc tests --- runtime/interpreter/interpreter.go | 2 +- runtime/interpreter/value_test.go | 12 ++- runtime/stdlib/builtin_test.go | 4 +- runtime/stdlib/test_test.go | 154 ++++++++++++++--------------- tools/analysis/analysis_test.go | 22 ++--- 5 files changed, 99 insertions(+), 95 deletions(-) diff --git a/runtime/interpreter/interpreter.go b/runtime/interpreter/interpreter.go index 2edae310f7..2513ec8aad 100644 --- a/runtime/interpreter/interpreter.go +++ b/runtime/interpreter/interpreter.go @@ -1265,7 +1265,7 @@ func (interpreter *Interpreter) declareNonEnumCompositeValue( attachmentType := interpreter.MustSemaTypeOfValue(value).(*sema.CompositeType) // Self's type in the constructor is codomain of the attachment's entitlement map, since // the constructor can only be called when in possession of the base resource - // if the attachment is declared with pub access, then self is unauthorized + // if the attachment is declared with access(all) access, then self is unauthorized if attachmentType.AttachmentEntitlementAccess != nil { auth = ConvertSemaAccesstoStaticAuthorization(interpreter, attachmentType.AttachmentEntitlementAccess.Codomain()) } diff --git a/runtime/interpreter/value_test.go b/runtime/interpreter/value_test.go index d56cb792fb..c06fdcfda3 100644 --- a/runtime/interpreter/value_test.go +++ b/runtime/interpreter/value_test.go @@ -1657,20 +1657,24 @@ func TestEphemeralReferenceTypeConformance(t *testing.T) { // Obtain a self referencing (cyclic) ephemeral reference value. code := ` - pub fun getEphemeralRef(): &Foo { + access(all) fun getEphemeralRef(): &Foo { var foo = Foo() var fooRef = &foo as &Foo // Create the cyclic reference - fooRef.bar = fooRef + fooRef.setBar(fooRef) return fooRef } - pub struct Foo { + access(all) struct Foo { access(all) var bar: &Foo? + access(all) fun setBar(_ bar: &Foo) { + self.bar = bar + } + init() { self.bar = nil } @@ -3549,7 +3553,7 @@ func TestNonStorable(t *testing.T) { storage := newUnmeteredInMemoryStorage() code := ` - pub struct Foo { + access(all) struct Foo { let bar: &Int? diff --git a/runtime/stdlib/builtin_test.go b/runtime/stdlib/builtin_test.go index 6e1a7741b9..3f860e4bed 100644 --- a/runtime/stdlib/builtin_test.go +++ b/runtime/stdlib/builtin_test.go @@ -91,7 +91,7 @@ func TestAssert(t *testing.T) { t.Parallel() inter := newInterpreter(t, - `pub let test = assert`, + `access(all) let test = assert`, AssertFunction, ) @@ -136,7 +136,7 @@ func TestPanic(t *testing.T) { t.Parallel() inter := newInterpreter(t, - `pub let test = panic`, + `access(all) let test = panic`, PanicFunction, ) diff --git a/runtime/stdlib/test_test.go b/runtime/stdlib/test_test.go index b00ecec19b..922f967970 100644 --- a/runtime/stdlib/test_test.go +++ b/runtime/stdlib/test_test.go @@ -127,7 +127,7 @@ func TestTestNewMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let matcher = Test.newMatcher(fun (_ value: AnyStruct): Bool { if !value.getType().isSubtype(of: Type()) { return false @@ -154,7 +154,7 @@ func TestTestNewMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let matcher = Test.newMatcher(fun (_ value: Int): Bool { return value == 7 @@ -178,7 +178,7 @@ func TestTestNewMatcher(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { let matcher = Test.newMatcher(fun (_ value: Int): Bool { return (value + 7) == 4 @@ -203,7 +203,7 @@ func TestTestNewMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let matcher = Test.newMatcher(fun (_ value: &Foo): Bool { return value.a == 4 @@ -218,8 +218,8 @@ func TestTestNewMatcher(t *testing.T) { return res } - pub resource Foo { - pub let a: Int + access(all) resource Foo { + access(all) let a: Int init(_ a: Int) { self.a = a @@ -241,7 +241,7 @@ func TestTestNewMatcher(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { let matcher = Test.newMatcher(fun (_ value: @Foo): Bool { destroy value @@ -249,7 +249,7 @@ func TestTestNewMatcher(t *testing.T) { }) } - pub resource Foo {} + access(all) resource Foo {} ` _, err := newTestContractInterpreter(t, script) @@ -264,7 +264,7 @@ func TestTestNewMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let matcher = Test.newMatcher(fun (_ value: Int): Bool { return value == 7 @@ -288,7 +288,7 @@ func TestTestNewMatcher(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { let matcher = Test.newMatcher(fun (_ value: Int): Bool { return value == 7 @@ -309,7 +309,7 @@ func TestTestNewMatcher(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { let matcher1 = Test.newMatcher(fun (_ value: Int): Bool { return (value + 5) == 10 @@ -345,7 +345,7 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { Test.equal(1) } ` @@ -363,7 +363,7 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let matcher = Test.equal(1) return matcher.test(1) } @@ -383,13 +383,13 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let f = Foo() let matcher = Test.equal(f) return matcher.test(f) } - pub struct Foo {} + access(all) struct Foo {} ` inter, err := newTestContractInterpreter(t, script) @@ -406,13 +406,13 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let f <- create Foo() let matcher = Test.equal(<-f) return matcher.test(<- create Foo()) } - pub resource Foo {} + access(all) resource Foo {} ` _, err := newTestContractInterpreter(t, script) @@ -429,7 +429,7 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { let matcher = Test.equal("hello") } ` @@ -447,7 +447,7 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { let matcher = Test.equal(1) } ` @@ -465,7 +465,7 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let one = Test.equal(1) let two = Test.equal(2) @@ -490,7 +490,7 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let one = Test.equal(1) let two = Test.equal(2) @@ -514,7 +514,7 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let one = Test.equal(1) let two = Test.equal(2) @@ -538,7 +538,7 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let one = Test.equal(1) let notOne = Test.not(one) @@ -546,7 +546,7 @@ func TestTestEqualMatcher(t *testing.T) { return notOne.test(2) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let one = Test.equal(1) let notOne = Test.not(one) @@ -573,7 +573,7 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let one = Test.equal(1) let two = Test.equal(2) let three = Test.equal(3) @@ -598,7 +598,7 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let foo <- create Foo() let bar <- create Bar() @@ -611,8 +611,8 @@ func TestTestEqualMatcher(t *testing.T) { && matcher.test(<-create Bar()) } - pub resource Foo {} - pub resource Bar {} + access(all) resource Foo {} + access(all) resource Bar {} ` _, err := newTestContractInterpreter(t, script) @@ -630,7 +630,7 @@ func TestTestEqualMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let foo <- create Foo() let bar <- create Bar() @@ -642,8 +642,8 @@ func TestTestEqualMatcher(t *testing.T) { return matcher.test(<-create Foo()) } - pub resource Foo {} - pub resource Bar {} + access(all) resource Foo {} + access(all) resource Bar {} ` _, err := newTestContractInterpreter(t, script) @@ -665,7 +665,7 @@ func TestTestBeSucceededMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let successful = Test.beSucceeded() let scriptResult = Test.ScriptResult( @@ -677,7 +677,7 @@ func TestTestBeSucceededMatcher(t *testing.T) { return successful.test(scriptResult) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let successful = Test.beSucceeded() let scriptResult = Test.ScriptResult( @@ -708,7 +708,7 @@ func TestTestBeSucceededMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let successful = Test.beSucceeded() let transactionResult = Test.TransactionResult( @@ -719,7 +719,7 @@ func TestTestBeSucceededMatcher(t *testing.T) { return successful.test(transactionResult) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let successful = Test.beSucceeded() let transactionResult = Test.TransactionResult( @@ -749,7 +749,7 @@ func TestTestBeSucceededMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let successful = Test.beSucceeded() return successful.test("hello") @@ -774,7 +774,7 @@ func TestTestBeFailedMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let failed = Test.beFailed() let scriptResult = Test.ScriptResult( @@ -786,7 +786,7 @@ func TestTestBeFailedMatcher(t *testing.T) { return failed.test(scriptResult) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let failed = Test.beFailed() let scriptResult = Test.ScriptResult( @@ -817,7 +817,7 @@ func TestTestBeFailedMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let failed = Test.beFailed() let transactionResult = Test.TransactionResult( @@ -828,7 +828,7 @@ func TestTestBeFailedMatcher(t *testing.T) { return failed.test(transactionResult) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let failed = Test.beFailed() let transactionResult = Test.TransactionResult( @@ -858,7 +858,7 @@ func TestTestBeFailedMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let failed = Test.beFailed() return failed.test([]) @@ -883,13 +883,13 @@ func TestTestBeNilMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let isNil = Test.beNil() return isNil.test(nil) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let isNil = Test.beNil() return isNil.test([1, 2]) @@ -919,13 +919,13 @@ func TestTestBeEmptyMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let emptyArray = Test.beEmpty() return emptyArray.test([]) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let emptyArray = Test.beEmpty() return emptyArray.test([42, 23, 31]) @@ -950,14 +950,14 @@ func TestTestBeEmptyMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let emptyDict = Test.beEmpty() let dict: {Bool: Int} = {} return emptyDict.test(dict) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let emptyDict = Test.beEmpty() let dict: {Bool: Int} = {true: 1, false: 0} @@ -983,7 +983,7 @@ func TestTestBeEmptyMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let emptyDict = Test.beEmpty() return emptyDict.test("empty") @@ -1010,13 +1010,13 @@ func TestTestHaveElementCountMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let hasThreeElements = Test.haveElementCount(3) return hasThreeElements.test([42, 23, 31]) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let hasThreeElements = Test.haveElementCount(3) return hasThreeElements.test([42]) @@ -1041,14 +1041,14 @@ func TestTestHaveElementCountMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let hasTwoElements = Test.haveElementCount(2) let dict: {Bool: Int} = {true: 1, false: 0} return hasTwoElements.test(dict) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let hasTwoElements = Test.haveElementCount(2) let dict: {Bool: Int} = {} @@ -1074,7 +1074,7 @@ func TestTestHaveElementCountMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let hasTwoElements = Test.haveElementCount(2) return hasTwoElements.test("two") @@ -1101,13 +1101,13 @@ func TestTestContainMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let containsTwenty = Test.contain(20) return containsTwenty.test([42, 20, 31]) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let containsTwenty = Test.contain(20) return containsTwenty.test([42]) @@ -1132,14 +1132,14 @@ func TestTestContainMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let containsFalse = Test.contain(false) let dict: {Bool: Int} = {true: 1, false: 0} return containsFalse.test(dict) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let containsFive = Test.contain(5) let dict: {Int: Bool} = {1: true, 0: false} @@ -1165,7 +1165,7 @@ func TestTestContainMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let containsFalse = Test.contain(false) return containsFalse.test("false") @@ -1192,13 +1192,13 @@ func TestTestBeGreaterThanMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let greaterThanFive = Test.beGreaterThan(5) return greaterThanFive.test(7) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let greaterThanFive = Test.beGreaterThan(5) return greaterThanFive.test(2) @@ -1223,7 +1223,7 @@ func TestTestBeGreaterThanMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let greaterThanFive = Test.beGreaterThan(5) return greaterThanFive.test("7") @@ -1248,13 +1248,13 @@ func TestTestBeLessThanMatcher(t *testing.T) { script := ` import Test - pub fun testMatch(): Bool { + access(all) fun testMatch(): Bool { let lessThanSeven = Test.beLessThan(7) return lessThanSeven.test(5) } - pub fun testNoMatch(): Bool { + access(all) fun testNoMatch(): Bool { let lessThanSeven = Test.beLessThan(7) return lessThanSeven.test(9) @@ -1279,7 +1279,7 @@ func TestTestBeLessThanMatcher(t *testing.T) { script := ` import Test - pub fun test(): Bool { + access(all) fun test(): Bool { let lessThanSeven = Test.beLessThan(7) return lessThanSeven.test(true) @@ -1304,7 +1304,7 @@ func TestTestExpect(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { Test.expect("this string", Test.equal("this string")) } ` @@ -1322,7 +1322,7 @@ func TestTestExpect(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { Test.expect("this string", Test.equal("other string")) } ` @@ -1341,7 +1341,7 @@ func TestTestExpect(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { Test.expect("string", Test.equal(1)) } ` @@ -1360,7 +1360,7 @@ func TestTestExpect(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { Test.expect("hello", Test.equal("hello")) } ` @@ -1378,7 +1378,7 @@ func TestTestExpect(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { Test.expect("string", Test.equal(1)) } ` @@ -1396,13 +1396,13 @@ func TestTestExpect(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { let f1 <- create Foo() let f2 <- create Foo() Test.expect(<-f1, Test.equal(<-f2)) } - pub resource Foo {} + access(all) resource Foo {} ` _, err := newTestContractInterpreter(t, script) @@ -1418,14 +1418,14 @@ func TestTestExpect(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { let foo <- create Foo() let bar = Bar() Test.expect(<-foo, Test.equal(bar)) } - pub resource Foo {} - pub struct Bar {} + access(all) resource Foo {} + access(all) struct Bar {} ` _, err := newTestContractInterpreter(t, script) @@ -1440,14 +1440,14 @@ func TestTestExpect(t *testing.T) { script := ` import Test - pub fun test() { + access(all) fun test() { let foo = Foo() let bar <- create Bar() Test.expect(foo, Test.equal(<-bar)) } - pub struct Foo {} - pub resource Bar {} + access(all) struct Foo {} + access(all) resource Bar {} ` _, err := newTestContractInterpreter(t, script) diff --git a/tools/analysis/analysis_test.go b/tools/analysis/analysis_test.go index e7cb708823..e7f1121ef9 100644 --- a/tools/analysis/analysis_test.go +++ b/tools/analysis/analysis_test.go @@ -42,7 +42,7 @@ func TestNeedSyntaxAndImport(t *testing.T) { const txCode = ` import 0x1 - pub let y = "test" as! String + access(all) let y = "test" as! String ` contractAddress := common.MustBytesToAddress([]byte{0x1}) @@ -51,7 +51,7 @@ func TestNeedSyntaxAndImport(t *testing.T) { Name: "ContractA", } const contractCode = ` - pub contract ContractA { + access(all) contract ContractA { init() { let y = true as! Bool } @@ -152,15 +152,15 @@ func TestNeedSyntaxAndImport(t *testing.T) { { location: contractLocation, Range: ast.Range{ - StartPos: ast.Position{Offset: 61, Line: 4, Column: 15}, - EndPos: ast.Position{Offset: 73, Line: 4, Column: 27}, + StartPos: ast.Position{Offset: 69, Line: 4, Column: 15}, + EndPos: ast.Position{Offset: 81, Line: 4, Column: 27}, }, }, { location: txLocation, Range: ast.Range{ - StartPos: ast.Position{Offset: 31, Line: 4, Column: 15}, - EndPos: ast.Position{Offset: 47, Line: 4, Column: 31}, + StartPos: ast.Position{Offset: 39, Line: 4, Column: 23}, + EndPos: ast.Position{Offset: 55, Line: 4, Column: 39}, }, }, }, @@ -178,7 +178,7 @@ func TestParseError(t *testing.T) { Name: "ContractA", } const contractCode = ` - pub contract ContractA { + access(all) contract ContractA { init() { ??? } @@ -224,7 +224,7 @@ func TestCheckError(t *testing.T) { Name: "ContractA", } const contractCode = ` - pub contract ContractA { + access(all) contract ContractA { init() { X } @@ -267,7 +267,7 @@ func TestStdlib(t *testing.T) { scriptLocation := common.ScriptLocation{} const code = ` - pub fun main() { + access(all) fun main() { panic("test") } ` @@ -309,7 +309,7 @@ func TestCyclicImports(t *testing.T) { } const fooContractCode = ` import 0x2 - pub contract Foo {} + access(all) contract Foo {} ` barContractAddress := common.MustBytesToAddress([]byte{0x2}) @@ -319,7 +319,7 @@ func TestCyclicImports(t *testing.T) { } const barContractCode = ` import 0x1 - pub contract Bar {} + access(all) contract Bar {} ` config := &analysis.Config{ From eb6f6dc3591541e2af60e3e49e71fac6444c39dd Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Wed, 14 Jun 2023 10:03:11 -0400 Subject: [PATCH 10/20] remove newly introduced pub and priv --- examples/quicksort.cdc | 4 +- .../sema/account_capability_controller.cdc | 10 +- .../sema/account_capability_controller.gen.go | 123 ++++++++++++++++++ runtime/sema/authaccount.cdc | 38 +++--- runtime/sema/authaccount.gen.go | 108 +++++++-------- runtime/sema/block.gen.go | 8 +- runtime/sema/character.gen.go | 2 +- runtime/sema/deployedcontract.gen.go | 8 +- .../sema/gen/testdata/docstrings.golden.go | 12 +- runtime/sema/gen/testdata/fields.cdc | 26 ++-- runtime/sema/gen/testdata/fields.golden.go | 26 ++-- runtime/sema/gen/testdata/functions.golden.go | 16 +-- runtime/sema/gen/testdata/nested.cdc | 6 +- runtime/sema/gen/testdata/nested.golden.go | 6 +- runtime/sema/publicaccount.cdc | 8 +- runtime/sema/publicaccount.gen.go | 40 +++--- .../sema/storage_capability_controller.cdc | 14 +- .../sema/storage_capability_controller.gen.go | 12 +- runtime/stdlib/contracts/crypto_test.cdc | 28 ++-- .../scripts/crypto_get_key_from_list.cdc | 2 +- .../stdlib/contracts/scripts/crypto_hash.cdc | 2 +- .../scripts/crypto_hash_with_tag.cdc | 2 +- .../contracts/scripts/crypto_key_list_add.cdc | 2 +- .../scripts/crypto_key_list_verify.cdc | 2 +- ...to_key_list_verify_duplicate_signature.cdc | 2 +- ...o_key_list_verify_insufficient_weights.cdc | 2 +- ...ypto_key_list_verify_invalid_signature.cdc | 2 +- ...ypto_key_list_verify_missing_signature.cdc | 2 +- .../crypto_key_list_verify_revoked.cdc | 2 +- .../scripts/crypto_revoke_key_from_list.cdc | 2 +- runtime/tests/checker/interface_test.go | 4 +- .../tests/interpreter/entitlements_test.go | 36 ++--- .../tests/interpreter/memory_metering_test.go | 4 +- tools/batch-script/get_contracts.cdc | 2 +- 34 files changed, 343 insertions(+), 220 deletions(-) diff --git a/examples/quicksort.cdc b/examples/quicksort.cdc index 0332febcdc..55f173a026 100644 --- a/examples/quicksort.cdc +++ b/examples/quicksort.cdc @@ -4,7 +4,7 @@ /// > Our version of quicksort is not the fastest possible, /// > but it's one of the simplest. /// -pub fun quickSort(_ items: &[AnyStruct], isLess: ((Int, Int): Bool)) { +access(self) fun quickSort(_ items: &[AnyStruct], isLess: ((Int, Int): Bool)) { fun quickSortPart(leftIndex: Int, rightIndex: Int) { @@ -38,7 +38,7 @@ pub fun quickSort(_ items: &[AnyStruct], isLess: ((Int, Int): Bool)) { ) } -pub fun main() { +access(self) fun main() { let items = [5, 3, 7, 6, 2, 9] quickSort( &items as &[AnyStruct], diff --git a/runtime/sema/account_capability_controller.cdc b/runtime/sema/account_capability_controller.cdc index 3dae2cc270..7bfd3f9e78 100644 --- a/runtime/sema/account_capability_controller.cdc +++ b/runtime/sema/account_capability_controller.cdc @@ -1,16 +1,16 @@ -pub struct AccountCapabilityController { +access(all) struct AccountCapabilityController { /// An arbitrary "tag" for the controller. /// For example, it could be used to describe the purpose of the capability. /// Empty by default. - pub(set) var tag: String + access(all) var tag: String /// The type of the controlled capability, i.e. the T in `Capability`. - pub let borrowType: Type + access(all) let borrowType: Type /// The identifier of the controlled capability. /// All copies of a capability have the same ID. - pub let capabilityID: UInt64 + access(all) let capabilityID: UInt64 /// Delete this capability controller, /// and disable the controlled capability and its copies. @@ -23,5 +23,5 @@ pub struct AccountCapabilityController { /// /// Borrowing from the controlled capability or its copies will return nil. /// - pub fun delete() + access(all) fun delete() } \ No newline at end of file diff --git a/runtime/sema/account_capability_controller.gen.go b/runtime/sema/account_capability_controller.gen.go index e69de29bb2..54f153695e 100644 --- a/runtime/sema/account_capability_controller.gen.go +++ b/runtime/sema/account_capability_controller.gen.go @@ -0,0 +1,123 @@ +// Code generated from account_capability_controller.cdc. DO NOT EDIT. +/* + * Cadence - The resource-oriented smart contract programming language + * + * Copyright Dapper Labs, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package sema + +import "github.com/onflow/cadence/runtime/ast" + +const AccountCapabilityControllerTypeTagFieldName = "tag" + +var AccountCapabilityControllerTypeTagFieldType = StringType + +const AccountCapabilityControllerTypeTagFieldDocString = ` +An arbitrary "tag" for the controller. +For example, it could be used to describe the purpose of the capability. +Empty by default. +` + +const AccountCapabilityControllerTypeBorrowTypeFieldName = "borrowType" + +var AccountCapabilityControllerTypeBorrowTypeFieldType = MetaType + +const AccountCapabilityControllerTypeBorrowTypeFieldDocString = ` +The type of the controlled capability, i.e. the T in ` + "`Capability`" + `. +` + +const AccountCapabilityControllerTypeCapabilityIDFieldName = "capabilityID" + +var AccountCapabilityControllerTypeCapabilityIDFieldType = UInt64Type + +const AccountCapabilityControllerTypeCapabilityIDFieldDocString = ` +The identifier of the controlled capability. +All copies of a capability have the same ID. +` + +const AccountCapabilityControllerTypeDeleteFunctionName = "delete" + +var AccountCapabilityControllerTypeDeleteFunctionType = &FunctionType{ + ReturnTypeAnnotation: NewTypeAnnotation( + VoidType, + ), +} + +const AccountCapabilityControllerTypeDeleteFunctionDocString = ` +Delete this capability controller, +and disable the controlled capability and its copies. + +The controller will be deleted from storage, +but the controlled capability and its copies remain. + +Once this function returns, the controller is no longer usable, +all further operations on the controller will panic. + +Borrowing from the controlled capability or its copies will return nil. +` + +const AccountCapabilityControllerTypeName = "AccountCapabilityController" + +var AccountCapabilityControllerType = &SimpleType{ + Name: AccountCapabilityControllerTypeName, + QualifiedName: AccountCapabilityControllerTypeName, + TypeID: AccountCapabilityControllerTypeName, + tag: AccountCapabilityControllerTypeTag, + IsResource: false, + Storable: false, + Equatable: false, + Comparable: false, + Exportable: false, + Importable: false, +} + +func init() { + AccountCapabilityControllerType.Members = func(t *SimpleType) map[string]MemberResolver { + return MembersAsResolvers([]*Member{ + NewUnmeteredFieldMember( + t, + ast.AccessAll, + ast.VariableKindVariable, + AccountCapabilityControllerTypeTagFieldName, + AccountCapabilityControllerTypeTagFieldType, + AccountCapabilityControllerTypeTagFieldDocString, + ), + NewUnmeteredFieldMember( + t, + ast.AccessAll, + ast.VariableKindConstant, + AccountCapabilityControllerTypeBorrowTypeFieldName, + AccountCapabilityControllerTypeBorrowTypeFieldType, + AccountCapabilityControllerTypeBorrowTypeFieldDocString, + ), + NewUnmeteredFieldMember( + t, + ast.AccessAll, + ast.VariableKindConstant, + AccountCapabilityControllerTypeCapabilityIDFieldName, + AccountCapabilityControllerTypeCapabilityIDFieldType, + AccountCapabilityControllerTypeCapabilityIDFieldDocString, + ), + NewUnmeteredFunctionMember( + t, + ast.AccessAll, + AccountCapabilityControllerTypeDeleteFunctionName, + AccountCapabilityControllerTypeDeleteFunctionType, + AccountCapabilityControllerTypeDeleteFunctionDocString, + ), + }) + } +} diff --git a/runtime/sema/authaccount.cdc b/runtime/sema/authaccount.cdc index 52f533a862..b9ba65ae29 100644 --- a/runtime/sema/authaccount.cdc +++ b/runtime/sema/authaccount.cdc @@ -26,7 +26,7 @@ access(all) struct AuthAccount { access(all) let inbox: AuthAccount.Inbox /// The capabilities of the account. - pub let capabilities: AuthAccount.Capabilities + access(all) let capabilities: AuthAccount.Capabilities /// All public paths of this account. access(all) let publicPaths: [PublicPath] @@ -310,36 +310,36 @@ access(all) struct AuthAccount { access(all) fun claim(_ name: String, provider: Address): Capability? } - pub struct Capabilities { + access(all) struct Capabilities { /// The storage capabilities of the account. - pub let storage: AuthAccount.StorageCapabilities + access(all) let storage: AuthAccount.StorageCapabilities /// The account capabilities of the account. - pub let account: AuthAccount.AccountCapabilities + access(all) let account: AuthAccount.AccountCapabilities /// Returns the capability at the given public path. /// Returns nil if the capability does not exist, /// or if the given type is not a supertype of the capability's borrow type. - pub fun get(_ path: PublicPath): Capability? + access(all) fun get(_ path: PublicPath): Capability? /// Borrows the capability at the given public path. /// Returns nil if the capability does not exist, or cannot be borrowed using the given type. /// The function is equivalent to `get(path)?.borrow()`. - pub fun borrow(_ path: PublicPath): T? + access(all) fun borrow(_ path: PublicPath): T? /// Publish the capability at the given public path. /// /// If there is already a capability published under the given path, the program aborts. /// /// The path must be a public path, i.e., only the domain `public` is allowed. - pub fun publish(_ capability: Capability, at: PublicPath) + access(all) fun publish(_ capability: Capability, at: PublicPath) /// Unpublish the capability published at the given path. /// /// Returns the capability if one was published at the path. /// Returns nil if no capability was published at the path. - pub fun unpublish(_ path: PublicPath): Capability? + access(all) fun unpublish(_ path: PublicPath): Capability? /// **DEPRECATED**: This function only exists temporarily to aid in the migration of links. /// This function will not be part of the final Capability Controller API. @@ -353,18 +353,18 @@ access(all) struct AuthAccount { /// /// Returns the ID of the issued capability controller, if any. /// Returns nil if migration fails. - pub fun migrateLink(_ newCapabilityPath: CapabilityPath): UInt64? + access(all) fun migrateLink(_ newCapabilityPath: CapabilityPath): UInt64? } - pub struct StorageCapabilities { + access(all) struct StorageCapabilities { /// Get the storage capability controller for the capability with the specified ID. /// /// Returns nil if the ID does not reference an existing storage capability. - pub fun getController(byCapabilityID: UInt64): &StorageCapabilityController? + access(all) fun getController(byCapabilityID: UInt64): &StorageCapabilityController? /// Get all storage capability controllers for capabilities that target this storage path - pub fun getControllers(forPath: StoragePath): [&StorageCapabilityController] + access(all) fun getControllers(forPath: StoragePath): [&StorageCapabilityController] /// Iterate over all storage capability controllers for capabilities that target this storage path, /// passing a reference to each controller to the provided callback function. @@ -376,20 +376,20 @@ access(all) struct AuthAccount { /// or a storage capability controller is retargeted from or to the path, /// then the callback must stop iteration by returning false. /// Otherwise, iteration aborts. - pub fun forEachController(forPath: StoragePath, _ function: fun(&StorageCapabilityController): Bool) + access(all) fun forEachController(forPath: StoragePath, _ function: fun(&StorageCapabilityController): Bool) /// Issue/create a new storage capability. - pub fun issue(_ path: StoragePath): Capability + access(all) fun issue(_ path: StoragePath): Capability } - pub struct AccountCapabilities { + access(all) struct AccountCapabilities { /// Get capability controller for capability with the specified ID. /// /// Returns nil if the ID does not reference an existing account capability. - pub fun getController(byCapabilityID: UInt64): &AccountCapabilityController? + access(all) fun getController(byCapabilityID: UInt64): &AccountCapabilityController? /// Get all capability controllers for all account capabilities. - pub fun getControllers(): [&AccountCapabilityController] + access(all) fun getControllers(): [&AccountCapabilityController] /// Iterate over all account capability controllers for all account capabilities, /// passing a reference to each controller to the provided callback function. @@ -400,9 +400,9 @@ access(all) struct AuthAccount { /// or an existing account capability controller for the account is deleted, /// then the callback must stop iteration by returning false. /// Otherwise, iteration aborts. - pub fun forEachController(_ function: fun(&AccountCapabilityController): Bool) + access(all) fun forEachController(_ function: fun(&AccountCapabilityController): Bool) /// Issue/create a new account capability. - pub fun issue(): Capability + access(all) fun issue(): Capability } } diff --git a/runtime/sema/authaccount.gen.go b/runtime/sema/authaccount.gen.go index e7a9a62286..e326878f45 100644 --- a/runtime/sema/authaccount.gen.go +++ b/runtime/sema/authaccount.gen.go @@ -810,7 +810,7 @@ func init() { var members = []*Member{ NewUnmeteredFieldMember( AuthAccountContractsType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountContractsTypeNamesFieldName, AuthAccountContractsTypeNamesFieldType, @@ -818,35 +818,35 @@ func init() { ), NewUnmeteredFunctionMember( AuthAccountContractsType, - ast.AccessPublic, + ast.AccessAll, AuthAccountContractsTypeAddFunctionName, AuthAccountContractsTypeAddFunctionType, AuthAccountContractsTypeAddFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountContractsType, - ast.AccessPublic, + ast.AccessAll, AuthAccountContractsTypeUpdate__experimentalFunctionName, AuthAccountContractsTypeUpdate__experimentalFunctionType, AuthAccountContractsTypeUpdate__experimentalFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountContractsType, - ast.AccessPublic, + ast.AccessAll, AuthAccountContractsTypeGetFunctionName, AuthAccountContractsTypeGetFunctionType, AuthAccountContractsTypeGetFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountContractsType, - ast.AccessPublic, + ast.AccessAll, AuthAccountContractsTypeRemoveFunctionName, AuthAccountContractsTypeRemoveFunctionType, AuthAccountContractsTypeRemoveFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountContractsType, - ast.AccessPublic, + ast.AccessAll, AuthAccountContractsTypeBorrowFunctionName, AuthAccountContractsTypeBorrowFunctionType, AuthAccountContractsTypeBorrowFunctionDocString, @@ -987,35 +987,35 @@ func init() { var members = []*Member{ NewUnmeteredFunctionMember( AuthAccountKeysType, - ast.AccessPublic, + ast.AccessAll, AuthAccountKeysTypeAddFunctionName, AuthAccountKeysTypeAddFunctionType, AuthAccountKeysTypeAddFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountKeysType, - ast.AccessPublic, + ast.AccessAll, AuthAccountKeysTypeGetFunctionName, AuthAccountKeysTypeGetFunctionType, AuthAccountKeysTypeGetFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountKeysType, - ast.AccessPublic, + ast.AccessAll, AuthAccountKeysTypeRevokeFunctionName, AuthAccountKeysTypeRevokeFunctionType, AuthAccountKeysTypeRevokeFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountKeysType, - ast.AccessPublic, + ast.AccessAll, AuthAccountKeysTypeForEachFunctionName, AuthAccountKeysTypeForEachFunctionType, AuthAccountKeysTypeForEachFunctionDocString, ), NewUnmeteredFieldMember( AuthAccountKeysType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountKeysTypeCountFieldName, AuthAccountKeysTypeCountFieldType, @@ -1159,21 +1159,21 @@ func init() { var members = []*Member{ NewUnmeteredFunctionMember( AuthAccountInboxType, - ast.AccessPublic, + ast.AccessAll, AuthAccountInboxTypePublishFunctionName, AuthAccountInboxTypePublishFunctionType, AuthAccountInboxTypePublishFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountInboxType, - ast.AccessPublic, + ast.AccessAll, AuthAccountInboxTypeUnpublishFunctionName, AuthAccountInboxTypeUnpublishFunctionType, AuthAccountInboxTypeUnpublishFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountInboxType, - ast.AccessPublic, + ast.AccessAll, AuthAccountInboxTypeClaimFunctionName, AuthAccountInboxTypeClaimFunctionType, AuthAccountInboxTypeClaimFunctionDocString, @@ -1375,7 +1375,7 @@ func init() { var members = []*Member{ NewUnmeteredFieldMember( AuthAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountCapabilitiesTypeStorageFieldName, AuthAccountCapabilitiesTypeStorageFieldType, @@ -1383,7 +1383,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountCapabilitiesTypeAccountFieldName, AuthAccountCapabilitiesTypeAccountFieldType, @@ -1391,35 +1391,35 @@ func init() { ), NewUnmeteredFunctionMember( AuthAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountCapabilitiesTypeGetFunctionName, AuthAccountCapabilitiesTypeGetFunctionType, AuthAccountCapabilitiesTypeGetFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountCapabilitiesTypeBorrowFunctionName, AuthAccountCapabilitiesTypeBorrowFunctionType, AuthAccountCapabilitiesTypeBorrowFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountCapabilitiesTypePublishFunctionName, AuthAccountCapabilitiesTypePublishFunctionType, AuthAccountCapabilitiesTypePublishFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountCapabilitiesTypeUnpublishFunctionName, AuthAccountCapabilitiesTypeUnpublishFunctionType, AuthAccountCapabilitiesTypeUnpublishFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountCapabilitiesTypeMigrateLinkFunctionName, AuthAccountCapabilitiesTypeMigrateLinkFunctionType, AuthAccountCapabilitiesTypeMigrateLinkFunctionDocString, @@ -1574,28 +1574,28 @@ func init() { var members = []*Member{ NewUnmeteredFunctionMember( AuthAccountStorageCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountStorageCapabilitiesTypeGetControllerFunctionName, AuthAccountStorageCapabilitiesTypeGetControllerFunctionType, AuthAccountStorageCapabilitiesTypeGetControllerFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountStorageCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountStorageCapabilitiesTypeGetControllersFunctionName, AuthAccountStorageCapabilitiesTypeGetControllersFunctionType, AuthAccountStorageCapabilitiesTypeGetControllersFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountStorageCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountStorageCapabilitiesTypeForEachControllerFunctionName, AuthAccountStorageCapabilitiesTypeForEachControllerFunctionType, AuthAccountStorageCapabilitiesTypeForEachControllerFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountStorageCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountStorageCapabilitiesTypeIssueFunctionName, AuthAccountStorageCapabilitiesTypeIssueFunctionType, AuthAccountStorageCapabilitiesTypeIssueFunctionDocString, @@ -1734,28 +1734,28 @@ func init() { var members = []*Member{ NewUnmeteredFunctionMember( AuthAccountAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountAccountCapabilitiesTypeGetControllerFunctionName, AuthAccountAccountCapabilitiesTypeGetControllerFunctionType, AuthAccountAccountCapabilitiesTypeGetControllerFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountAccountCapabilitiesTypeGetControllersFunctionName, AuthAccountAccountCapabilitiesTypeGetControllersFunctionType, AuthAccountAccountCapabilitiesTypeGetControllersFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountAccountCapabilitiesTypeForEachControllerFunctionName, AuthAccountAccountCapabilitiesTypeForEachControllerFunctionType, AuthAccountAccountCapabilitiesTypeForEachControllerFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, AuthAccountAccountCapabilitiesTypeIssueFunctionName, AuthAccountAccountCapabilitiesTypeIssueFunctionType, AuthAccountAccountCapabilitiesTypeIssueFunctionDocString, @@ -1789,7 +1789,7 @@ func init() { var members = []*Member{ NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypeAddressFieldName, AuthAccountTypeAddressFieldType, @@ -1797,7 +1797,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypeBalanceFieldName, AuthAccountTypeBalanceFieldType, @@ -1805,7 +1805,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypeAvailableBalanceFieldName, AuthAccountTypeAvailableBalanceFieldType, @@ -1813,7 +1813,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypeStorageUsedFieldName, AuthAccountTypeStorageUsedFieldType, @@ -1821,7 +1821,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypeStorageCapacityFieldName, AuthAccountTypeStorageCapacityFieldType, @@ -1829,7 +1829,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypeContractsFieldName, AuthAccountTypeContractsFieldType, @@ -1837,7 +1837,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypeKeysFieldName, AuthAccountTypeKeysFieldType, @@ -1845,7 +1845,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypeInboxFieldName, AuthAccountTypeInboxFieldType, @@ -1853,7 +1853,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypeCapabilitiesFieldName, AuthAccountTypeCapabilitiesFieldType, @@ -1861,7 +1861,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypePublicPathsFieldName, AuthAccountTypePublicPathsFieldType, @@ -1869,7 +1869,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypePrivatePathsFieldName, AuthAccountTypePrivatePathsFieldType, @@ -1877,7 +1877,7 @@ func init() { ), NewUnmeteredFieldMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, AuthAccountTypeStoragePathsFieldName, AuthAccountTypeStoragePathsFieldType, @@ -1885,91 +1885,91 @@ func init() { ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeSaveFunctionName, AuthAccountTypeSaveFunctionType, AuthAccountTypeSaveFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeTypeFunctionName, AuthAccountTypeTypeFunctionType, AuthAccountTypeTypeFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeLoadFunctionName, AuthAccountTypeLoadFunctionType, AuthAccountTypeLoadFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeCopyFunctionName, AuthAccountTypeCopyFunctionType, AuthAccountTypeCopyFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeBorrowFunctionName, AuthAccountTypeBorrowFunctionType, AuthAccountTypeBorrowFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeLinkFunctionName, AuthAccountTypeLinkFunctionType, AuthAccountTypeLinkFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeLinkAccountFunctionName, AuthAccountTypeLinkAccountFunctionType, AuthAccountTypeLinkAccountFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeGetCapabilityFunctionName, AuthAccountTypeGetCapabilityFunctionType, AuthAccountTypeGetCapabilityFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeGetLinkTargetFunctionName, AuthAccountTypeGetLinkTargetFunctionType, AuthAccountTypeGetLinkTargetFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeUnlinkFunctionName, AuthAccountTypeUnlinkFunctionType, AuthAccountTypeUnlinkFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeForEachPublicFunctionName, AuthAccountTypeForEachPublicFunctionType, AuthAccountTypeForEachPublicFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeForEachPrivateFunctionName, AuthAccountTypeForEachPrivateFunctionType, AuthAccountTypeForEachPrivateFunctionDocString, ), NewUnmeteredFunctionMember( AuthAccountType, - ast.AccessPublic, + ast.AccessAll, AuthAccountTypeForEachStoredFunctionName, AuthAccountTypeForEachStoredFunctionType, AuthAccountTypeForEachStoredFunctionDocString, diff --git a/runtime/sema/block.gen.go b/runtime/sema/block.gen.go index 8933b7adfa..0e1b5d11cb 100644 --- a/runtime/sema/block.gen.go +++ b/runtime/sema/block.gen.go @@ -83,7 +83,7 @@ func init() { return MembersAsResolvers([]*Member{ NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, BlockTypeHeightFieldName, BlockTypeHeightFieldType, @@ -91,7 +91,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, BlockTypeViewFieldName, BlockTypeViewFieldType, @@ -99,7 +99,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, BlockTypeTimestampFieldName, BlockTypeTimestampFieldType, @@ -107,7 +107,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, BlockTypeIdFieldName, BlockTypeIdFieldType, diff --git a/runtime/sema/character.gen.go b/runtime/sema/character.gen.go index bcd0fc9696..c2e2370a15 100644 --- a/runtime/sema/character.gen.go +++ b/runtime/sema/character.gen.go @@ -53,7 +53,7 @@ func init() { return MembersAsResolvers([]*Member{ NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, CharacterTypeToStringFunctionName, CharacterTypeToStringFunctionType, CharacterTypeToStringFunctionDocString, diff --git a/runtime/sema/deployedcontract.gen.go b/runtime/sema/deployedcontract.gen.go index 45edac6cd6..87b3883b84 100644 --- a/runtime/sema/deployedcontract.gen.go +++ b/runtime/sema/deployedcontract.gen.go @@ -91,7 +91,7 @@ func init() { return MembersAsResolvers([]*Member{ NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, DeployedContractTypeAddressFieldName, DeployedContractTypeAddressFieldType, @@ -99,7 +99,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, DeployedContractTypeNameFieldName, DeployedContractTypeNameFieldType, @@ -107,7 +107,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, DeployedContractTypeCodeFieldName, DeployedContractTypeCodeFieldType, @@ -115,7 +115,7 @@ func init() { ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, DeployedContractTypePublicTypesFunctionName, DeployedContractTypePublicTypesFunctionType, DeployedContractTypePublicTypesFunctionDocString, diff --git a/runtime/sema/gen/testdata/docstrings.golden.go b/runtime/sema/gen/testdata/docstrings.golden.go index 46cbff7953..e27183f0e2 100644 --- a/runtime/sema/gen/testdata/docstrings.golden.go +++ b/runtime/sema/gen/testdata/docstrings.golden.go @@ -121,7 +121,7 @@ func init() { return MembersAsResolvers([]*Member{ NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, DocstringsTypeOwoFieldName, DocstringsTypeOwoFieldType, @@ -129,7 +129,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, DocstringsTypeUwuFieldName, DocstringsTypeUwuFieldType, @@ -137,14 +137,14 @@ func init() { ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, DocstringsTypeNwnFunctionName, DocstringsTypeNwnFunctionType, DocstringsTypeNwnFunctionDocString, ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, DocstringsTypeWithBlanksFieldName, DocstringsTypeWithBlanksFieldType, @@ -152,14 +152,14 @@ func init() { ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, DocstringsTypeIsSmolBeanFunctionName, DocstringsTypeIsSmolBeanFunctionType, DocstringsTypeIsSmolBeanFunctionDocString, ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, DocstringsTypeRunningOutOfIdeasFunctionName, DocstringsTypeRunningOutOfIdeasFunctionType, DocstringsTypeRunningOutOfIdeasFunctionDocString, diff --git a/runtime/sema/gen/testdata/fields.cdc b/runtime/sema/gen/testdata/fields.cdc index 7f95fe3677..bd011b73fc 100644 --- a/runtime/sema/gen/testdata/fields.cdc +++ b/runtime/sema/gen/testdata/fields.cdc @@ -1,40 +1,40 @@ access(all) struct Test { /// This is a test integer. - pub let testInt: UInt64 + access(all) let testInt: UInt64 /// This is a test optional integer. - pub let testOptInt: UInt64? + access(all) let testOptInt: UInt64? /// This is a test integer reference. - pub let testRefInt: &UInt64 + access(all) let testRefInt: &UInt64 /// This is a test variable-sized integer array. - pub let testVarInts: [UInt64] + access(all) let testVarInts: [UInt64] /// This is a test constant-sized integer array. - pub let testConstInts: [UInt64; 2] + access(all) let testConstInts: [UInt64; 2] /// This is a test parameterized-type field. - pub let testParam: Foo + access(all) let testParam: Foo /// This is a test address field. - pub let testAddress: Address + access(all) let testAddress: Address /// This is a test type field. - pub let testType: Type + access(all) let testType: Type /// This is a test unparameterized capability field. - pub let testCap: Capability + access(all) let testCap: Capability /// This is a test parameterized capability field. - pub let testCapInt: Capability + access(all) let testCapInt: Capability /// This is a test restricted type (without type) field. - pub let testRestrictedWithoutType: {Bar, Baz} + access(all) let testRestrictedWithoutType: {Bar, Baz} /// This is a test restricted type (with type) field. - pub let testRestrictedWithType: Foo{Bar, Baz} + access(all) let testRestrictedWithType: Foo{Bar, Baz} /// This is a test restricted type (without restrictions) field. - pub let testRestrictedWithoutRestrictions: Foo{} + access(all) let testRestrictedWithoutRestrictions: Foo{} } diff --git a/runtime/sema/gen/testdata/fields.golden.go b/runtime/sema/gen/testdata/fields.golden.go index c845aeba28..6a55805536 100644 --- a/runtime/sema/gen/testdata/fields.golden.go +++ b/runtime/sema/gen/testdata/fields.golden.go @@ -168,7 +168,7 @@ func init() { return MembersAsResolvers([]*Member{ NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestIntFieldName, TestTypeTestIntFieldType, @@ -176,7 +176,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestOptIntFieldName, TestTypeTestOptIntFieldType, @@ -184,7 +184,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestRefIntFieldName, TestTypeTestRefIntFieldType, @@ -192,7 +192,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestVarIntsFieldName, TestTypeTestVarIntsFieldType, @@ -200,7 +200,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestConstIntsFieldName, TestTypeTestConstIntsFieldType, @@ -208,7 +208,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestParamFieldName, TestTypeTestParamFieldType, @@ -216,7 +216,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestAddressFieldName, TestTypeTestAddressFieldType, @@ -224,7 +224,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestTypeFieldName, TestTypeTestTypeFieldType, @@ -232,7 +232,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestCapFieldName, TestTypeTestCapFieldType, @@ -240,7 +240,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestCapIntFieldName, TestTypeTestCapIntFieldType, @@ -248,7 +248,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestRestrictedWithoutTypeFieldName, TestTypeTestRestrictedWithoutTypeFieldType, @@ -256,7 +256,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestRestrictedWithTypeFieldName, TestTypeTestRestrictedWithTypeFieldType, @@ -264,7 +264,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, TestTypeTestRestrictedWithoutRestrictionsFieldName, TestTypeTestRestrictedWithoutRestrictionsFieldType, diff --git a/runtime/sema/gen/testdata/functions.golden.go b/runtime/sema/gen/testdata/functions.golden.go index c21aae1f6b..0e108fb480 100644 --- a/runtime/sema/gen/testdata/functions.golden.go +++ b/runtime/sema/gen/testdata/functions.golden.go @@ -193,56 +193,56 @@ func init() { return MembersAsResolvers([]*Member{ NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, TestTypeNothingFunctionName, TestTypeNothingFunctionType, TestTypeNothingFunctionDocString, ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, TestTypeParamsFunctionName, TestTypeParamsFunctionType, TestTypeParamsFunctionDocString, ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, TestTypeReturnBoolFunctionName, TestTypeReturnBoolFunctionType, TestTypeReturnBoolFunctionDocString, ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, TestTypeParamsAndReturnFunctionName, TestTypeParamsAndReturnFunctionType, TestTypeParamsAndReturnFunctionDocString, ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, TestTypeTypeParamFunctionName, TestTypeTypeParamFunctionType, TestTypeTypeParamFunctionDocString, ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, TestTypeTypeParamWithBoundFunctionName, TestTypeTypeParamWithBoundFunctionType, TestTypeTypeParamWithBoundFunctionDocString, ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, TestTypeTypeParamWithBoundAndParamFunctionName, TestTypeTypeParamWithBoundAndParamFunctionType, TestTypeTypeParamWithBoundAndParamFunctionDocString, ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, TestTypeViewFunctionFunctionName, TestTypeViewFunctionFunctionType, TestTypeViewFunctionFunctionDocString, diff --git a/runtime/sema/gen/testdata/nested.cdc b/runtime/sema/gen/testdata/nested.cdc index 4991f5961a..f647f2a233 100644 --- a/runtime/sema/gen/testdata/nested.cdc +++ b/runtime/sema/gen/testdata/nested.cdc @@ -1,12 +1,12 @@ struct Foo { /// foo - pub fun foo() + access(all) fun foo() /// Bar - pub let bar: Foo.Bar + access(all) let bar: Foo.Bar struct Bar { /// bar - pub fun bar() + access(all) fun bar() } } diff --git a/runtime/sema/gen/testdata/nested.golden.go b/runtime/sema/gen/testdata/nested.golden.go index 94a3136e68..446fe2716a 100644 --- a/runtime/sema/gen/testdata/nested.golden.go +++ b/runtime/sema/gen/testdata/nested.golden.go @@ -73,7 +73,7 @@ func init() { var members = []*Member{ NewUnmeteredFunctionMember( FooBarType, - ast.AccessPublic, + ast.AccessAll, FooBarTypeBarFunctionName, FooBarTypeBarFunctionType, FooBarTypeBarFunctionDocString, @@ -102,14 +102,14 @@ func init() { var members = []*Member{ NewUnmeteredFunctionMember( FooType, - ast.AccessPublic, + ast.AccessAll, FooTypeFooFunctionName, FooTypeFooFunctionType, FooTypeFooFunctionDocString, ), NewUnmeteredFieldMember( FooType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, FooTypeBarFieldName, FooTypeBarFieldType, diff --git a/runtime/sema/publicaccount.cdc b/runtime/sema/publicaccount.cdc index 296f6dc5d4..32453cf4d4 100644 --- a/runtime/sema/publicaccount.cdc +++ b/runtime/sema/publicaccount.cdc @@ -23,7 +23,7 @@ access(all) struct PublicAccount { access(all) let keys: PublicAccount.Keys /// The capabilities of the account. - pub let capabilities: PublicAccount.Capabilities + access(all) let capabilities: PublicAccount.Capabilities /// All public paths of this account. access(all) let publicPaths: [PublicPath] @@ -87,14 +87,14 @@ access(all) struct PublicAccount { access(all) let count: UInt64 } - pub struct Capabilities { + access(all) struct Capabilities { /// get returns the storage capability at the given path, if one was stored there. - pub fun get(_ path: PublicPath): Capability? + access(all) fun get(_ path: PublicPath): Capability? /// borrow gets the storage capability at the given path, and borrows the capability if it exists. /// /// Returns nil if the capability does not exist or cannot be borrowed using the given type. /// The function is equivalent to `get(path)?.borrow()`. - pub fun borrow(_ path: PublicPath): T? + access(all) fun borrow(_ path: PublicPath): T? } } diff --git a/runtime/sema/publicaccount.gen.go b/runtime/sema/publicaccount.gen.go index 1933d4afa5..03838df1b8 100644 --- a/runtime/sema/publicaccount.gen.go +++ b/runtime/sema/publicaccount.gen.go @@ -285,7 +285,7 @@ func init() { var members = []*Member{ NewUnmeteredFieldMember( PublicAccountContractsType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, PublicAccountContractsTypeNamesFieldName, PublicAccountContractsTypeNamesFieldType, @@ -293,14 +293,14 @@ func init() { ), NewUnmeteredFunctionMember( PublicAccountContractsType, - ast.AccessPublic, + ast.AccessAll, PublicAccountContractsTypeGetFunctionName, PublicAccountContractsTypeGetFunctionType, PublicAccountContractsTypeGetFunctionDocString, ), NewUnmeteredFunctionMember( PublicAccountContractsType, - ast.AccessPublic, + ast.AccessAll, PublicAccountContractsTypeBorrowFunctionName, PublicAccountContractsTypeBorrowFunctionType, PublicAccountContractsTypeBorrowFunctionDocString, @@ -390,21 +390,21 @@ func init() { var members = []*Member{ NewUnmeteredFunctionMember( PublicAccountKeysType, - ast.AccessPublic, + ast.AccessAll, PublicAccountKeysTypeGetFunctionName, PublicAccountKeysTypeGetFunctionType, PublicAccountKeysTypeGetFunctionDocString, ), NewUnmeteredFunctionMember( PublicAccountKeysType, - ast.AccessPublic, + ast.AccessAll, PublicAccountKeysTypeForEachFunctionName, PublicAccountKeysTypeForEachFunctionType, PublicAccountKeysTypeForEachFunctionDocString, ), NewUnmeteredFieldMember( PublicAccountKeysType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, PublicAccountKeysTypeCountFieldName, PublicAccountKeysTypeCountFieldType, @@ -507,14 +507,14 @@ func init() { var members = []*Member{ NewUnmeteredFunctionMember( PublicAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, PublicAccountCapabilitiesTypeGetFunctionName, PublicAccountCapabilitiesTypeGetFunctionType, PublicAccountCapabilitiesTypeGetFunctionDocString, ), NewUnmeteredFunctionMember( PublicAccountCapabilitiesType, - ast.AccessPublic, + ast.AccessAll, PublicAccountCapabilitiesTypeBorrowFunctionName, PublicAccountCapabilitiesTypeBorrowFunctionType, PublicAccountCapabilitiesTypeBorrowFunctionDocString, @@ -545,7 +545,7 @@ func init() { var members = []*Member{ NewUnmeteredFieldMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, PublicAccountTypeAddressFieldName, PublicAccountTypeAddressFieldType, @@ -553,7 +553,7 @@ func init() { ), NewUnmeteredFieldMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, PublicAccountTypeBalanceFieldName, PublicAccountTypeBalanceFieldType, @@ -561,7 +561,7 @@ func init() { ), NewUnmeteredFieldMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, PublicAccountTypeAvailableBalanceFieldName, PublicAccountTypeAvailableBalanceFieldType, @@ -569,7 +569,7 @@ func init() { ), NewUnmeteredFieldMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, PublicAccountTypeStorageUsedFieldName, PublicAccountTypeStorageUsedFieldType, @@ -577,7 +577,7 @@ func init() { ), NewUnmeteredFieldMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, PublicAccountTypeStorageCapacityFieldName, PublicAccountTypeStorageCapacityFieldType, @@ -585,7 +585,7 @@ func init() { ), NewUnmeteredFieldMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, PublicAccountTypeContractsFieldName, PublicAccountTypeContractsFieldType, @@ -593,7 +593,7 @@ func init() { ), NewUnmeteredFieldMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, PublicAccountTypeKeysFieldName, PublicAccountTypeKeysFieldType, @@ -601,7 +601,7 @@ func init() { ), NewUnmeteredFieldMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, PublicAccountTypeCapabilitiesFieldName, PublicAccountTypeCapabilitiesFieldType, @@ -609,7 +609,7 @@ func init() { ), NewUnmeteredFieldMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, PublicAccountTypePublicPathsFieldName, PublicAccountTypePublicPathsFieldType, @@ -617,21 +617,21 @@ func init() { ), NewUnmeteredFunctionMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, PublicAccountTypeGetCapabilityFunctionName, PublicAccountTypeGetCapabilityFunctionType, PublicAccountTypeGetCapabilityFunctionDocString, ), NewUnmeteredFunctionMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, PublicAccountTypeGetLinkTargetFunctionName, PublicAccountTypeGetLinkTargetFunctionType, PublicAccountTypeGetLinkTargetFunctionDocString, ), NewUnmeteredFunctionMember( PublicAccountType, - ast.AccessPublic, + ast.AccessAll, PublicAccountTypeForEachPublicFunctionName, PublicAccountTypeForEachPublicFunctionType, PublicAccountTypeForEachPublicFunctionDocString, diff --git a/runtime/sema/storage_capability_controller.cdc b/runtime/sema/storage_capability_controller.cdc index 7221a7b5c9..c7260a20b8 100644 --- a/runtime/sema/storage_capability_controller.cdc +++ b/runtime/sema/storage_capability_controller.cdc @@ -1,16 +1,16 @@ -pub struct StorageCapabilityController { +access(all) struct StorageCapabilityController { /// An arbitrary "tag" for the controller. /// For example, it could be used to describe the purpose of the capability. /// Empty by default. - pub(set) var tag: String + access(all) var tag: String /// The type of the controlled capability, i.e. the T in `Capability`. - pub let borrowType: Type + access(all) let borrowType: Type /// The identifier of the controlled capability. /// All copies of a capability have the same ID. - pub let capabilityID: UInt64 + access(all) let capabilityID: UInt64 /// Delete this capability controller, /// and disable the controlled capability and its copies. @@ -23,12 +23,12 @@ pub struct StorageCapabilityController { /// /// Borrowing from the controlled capability or its copies will return nil. /// - pub fun delete() + access(all) fun delete() /// Returns the targeted storage path of the controlled capability. - pub fun target(): StoragePath + access(all) fun target(): StoragePath /// Retarget the controlled capability to the given storage path. /// The path may be different or the same as the current path. - pub fun retarget(_ target: StoragePath) + access(all) fun retarget(_ target: StoragePath) } diff --git a/runtime/sema/storage_capability_controller.gen.go b/runtime/sema/storage_capability_controller.gen.go index d114032758..3b29f2cd84 100644 --- a/runtime/sema/storage_capability_controller.gen.go +++ b/runtime/sema/storage_capability_controller.gen.go @@ -121,7 +121,7 @@ func init() { return MembersAsResolvers([]*Member{ NewUnmeteredFieldMember( t, - ast.AccessPublicSettable, + ast.AccessAll, ast.VariableKindVariable, StorageCapabilityControllerTypeTagFieldName, StorageCapabilityControllerTypeTagFieldType, @@ -129,7 +129,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, StorageCapabilityControllerTypeBorrowTypeFieldName, StorageCapabilityControllerTypeBorrowTypeFieldType, @@ -137,7 +137,7 @@ func init() { ), NewUnmeteredFieldMember( t, - ast.AccessPublic, + ast.AccessAll, ast.VariableKindConstant, StorageCapabilityControllerTypeCapabilityIDFieldName, StorageCapabilityControllerTypeCapabilityIDFieldType, @@ -145,21 +145,21 @@ func init() { ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, StorageCapabilityControllerTypeDeleteFunctionName, StorageCapabilityControllerTypeDeleteFunctionType, StorageCapabilityControllerTypeDeleteFunctionDocString, ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, StorageCapabilityControllerTypeTargetFunctionName, StorageCapabilityControllerTypeTargetFunctionType, StorageCapabilityControllerTypeTargetFunctionDocString, ), NewUnmeteredFunctionMember( t, - ast.AccessPublic, + ast.AccessAll, StorageCapabilityControllerTypeRetargetFunctionName, StorageCapabilityControllerTypeRetargetFunctionType, StorageCapabilityControllerTypeRetargetFunctionDocString, diff --git a/runtime/stdlib/contracts/crypto_test.cdc b/runtime/stdlib/contracts/crypto_test.cdc index 7c2dcfd9da..b1d1563f29 100644 --- a/runtime/stdlib/contracts/crypto_test.cdc +++ b/runtime/stdlib/contracts/crypto_test.cdc @@ -1,9 +1,9 @@ import Test -pub var blockchain = Test.newEmulatorBlockchain() -pub var account = blockchain.createAccount() +access(self) var blockchain = Test.newEmulatorBlockchain() +access(self) var account = blockchain.createAccount() -pub fun setup() { +access(self) fun setup() { blockchain.useConfiguration(Test.Configuration({ "Crypto": account.address })) @@ -19,57 +19,57 @@ pub fun setup() { Test.assert(err == nil) } -pub fun testCryptoHash() { +access(self) fun testCryptoHash() { let returnedValue = executeScript("./scripts/crypto_hash.cdc") Test.assert(returnedValue, message: "found: false") } -pub fun testCryptoHashWithTag() { +access(self) fun testCryptoHashWithTag() { let returnedValue = executeScript("./scripts/crypto_hash_with_tag.cdc") Test.assert(returnedValue, message: "found: false") } -pub fun testAddKeyToKeyList() { +access(self) fun testAddKeyToKeyList() { let returnedValue = executeScript("./scripts/crypto_key_list_add.cdc") Test.assert(returnedValue, message: "found: false") } -pub fun testGetKeyFromList() { +access(self) fun testGetKeyFromList() { let returnedValue = executeScript("./scripts/crypto_get_key_from_list.cdc") Test.assert(returnedValue, message: "found: false") } -pub fun testRevokeKeyFromList() { +access(self) fun testRevokeKeyFromList() { let returnedValue = executeScript("./scripts/crypto_revoke_key_from_list.cdc") Test.assert(returnedValue, message: "found: false") } -pub fun testKeyListVerify() { +access(self) fun testKeyListVerify() { let returnedValue = executeScript("./scripts/crypto_key_list_verify.cdc") Test.assert(returnedValue, message: "found: false") } -pub fun testKeyListVerifyInsufficientWeights() { +access(self) fun testKeyListVerifyInsufficientWeights() { let returnedValue = executeScript("./scripts/crypto_key_list_verify_insufficient_weights.cdc") Test.assert(returnedValue, message: "found: false") } -pub fun testKeyListVerifyWithRevokedKey() { +access(self) fun testKeyListVerifyWithRevokedKey() { let returnedValue = executeScript("./scripts/crypto_key_list_verify_revoked.cdc") Test.assert(returnedValue, message: "found: false") } -pub fun testKeyListVerifyWithMissingSignature() { +access(self) fun testKeyListVerifyWithMissingSignature() { let returnedValue = executeScript("./scripts/crypto_key_list_verify_missing_signature.cdc") Test.assert(returnedValue, message: "found: false") } -pub fun testKeyListVerifyDuplicateSignature() { +access(self) fun testKeyListVerifyDuplicateSignature() { let returnedValue = executeScript("./scripts/crypto_key_list_verify_duplicate_signature.cdc") Test.assert(returnedValue, message: "found: false") } -pub fun testKeyListVerifyInvalidSignature() { +access(self) fun testKeyListVerifyInvalidSignature() { let returnedValue = executeScript("./scripts/crypto_key_list_verify_invalid_signature.cdc") Test.assert(returnedValue, message: "found: false") } diff --git a/runtime/stdlib/contracts/scripts/crypto_get_key_from_list.cdc b/runtime/stdlib/contracts/scripts/crypto_get_key_from_list.cdc index cc2c3ef18a..0107456540 100644 --- a/runtime/stdlib/contracts/scripts/crypto_get_key_from_list.cdc +++ b/runtime/stdlib/contracts/scripts/crypto_get_key_from_list.cdc @@ -1,6 +1,6 @@ import Crypto from "Crypto" -pub fun main(): Bool { +access(self) fun main(): Bool { let keyList = Crypto.KeyList() let publicKey = PublicKey( diff --git a/runtime/stdlib/contracts/scripts/crypto_hash.cdc b/runtime/stdlib/contracts/scripts/crypto_hash.cdc index 3848a29f2f..8888b4b6e1 100644 --- a/runtime/stdlib/contracts/scripts/crypto_hash.cdc +++ b/runtime/stdlib/contracts/scripts/crypto_hash.cdc @@ -1,6 +1,6 @@ import Crypto from "Crypto" -pub fun main(): Bool { +access(self) fun main(): Bool { let hash = Crypto.hash([1, 2, 3], algorithm: HashAlgorithm.SHA3_256) return hash.length == 32 } diff --git a/runtime/stdlib/contracts/scripts/crypto_hash_with_tag.cdc b/runtime/stdlib/contracts/scripts/crypto_hash_with_tag.cdc index b38712efb5..fc50acac44 100644 --- a/runtime/stdlib/contracts/scripts/crypto_hash_with_tag.cdc +++ b/runtime/stdlib/contracts/scripts/crypto_hash_with_tag.cdc @@ -1,6 +1,6 @@ import Crypto from "Crypto" -pub fun main(): Bool { +access(self) fun main(): Bool { let hash = Crypto.hashWithTag( [1, 2, 3], tag: "v0.1.tag", diff --git a/runtime/stdlib/contracts/scripts/crypto_key_list_add.cdc b/runtime/stdlib/contracts/scripts/crypto_key_list_add.cdc index 31319ab87e..7adbbe5847 100644 --- a/runtime/stdlib/contracts/scripts/crypto_key_list_add.cdc +++ b/runtime/stdlib/contracts/scripts/crypto_key_list_add.cdc @@ -1,6 +1,6 @@ import Crypto from "Crypto" -pub fun main(): Bool { +access(self) fun main(): Bool { let keyList = Crypto.KeyList() let publicKey = PublicKey( diff --git a/runtime/stdlib/contracts/scripts/crypto_key_list_verify.cdc b/runtime/stdlib/contracts/scripts/crypto_key_list_verify.cdc index 8f91f993ae..fe341b4387 100644 --- a/runtime/stdlib/contracts/scripts/crypto_key_list_verify.cdc +++ b/runtime/stdlib/contracts/scripts/crypto_key_list_verify.cdc @@ -1,6 +1,6 @@ import Crypto from "Crypto" -pub fun main(): Bool { +access(self) fun main(): Bool { let keyList = Crypto.KeyList() let publicKeyA = PublicKey( diff --git a/runtime/stdlib/contracts/scripts/crypto_key_list_verify_duplicate_signature.cdc b/runtime/stdlib/contracts/scripts/crypto_key_list_verify_duplicate_signature.cdc index ea42acde84..f8d1508527 100644 --- a/runtime/stdlib/contracts/scripts/crypto_key_list_verify_duplicate_signature.cdc +++ b/runtime/stdlib/contracts/scripts/crypto_key_list_verify_duplicate_signature.cdc @@ -1,6 +1,6 @@ import Crypto from "Crypto" -pub fun main(): Bool { +access(self) fun main(): Bool { let keyList = Crypto.KeyList() let publicKey = PublicKey( diff --git a/runtime/stdlib/contracts/scripts/crypto_key_list_verify_insufficient_weights.cdc b/runtime/stdlib/contracts/scripts/crypto_key_list_verify_insufficient_weights.cdc index 43beb5ea19..c5f59ba3e5 100644 --- a/runtime/stdlib/contracts/scripts/crypto_key_list_verify_insufficient_weights.cdc +++ b/runtime/stdlib/contracts/scripts/crypto_key_list_verify_insufficient_weights.cdc @@ -1,6 +1,6 @@ import Crypto from "Crypto" -pub fun main(): Bool { +access(self) fun main(): Bool { let keyList = Crypto.KeyList() let publicKeyA = PublicKey( diff --git a/runtime/stdlib/contracts/scripts/crypto_key_list_verify_invalid_signature.cdc b/runtime/stdlib/contracts/scripts/crypto_key_list_verify_invalid_signature.cdc index 0e55f644e9..119f39b317 100644 --- a/runtime/stdlib/contracts/scripts/crypto_key_list_verify_invalid_signature.cdc +++ b/runtime/stdlib/contracts/scripts/crypto_key_list_verify_invalid_signature.cdc @@ -1,6 +1,6 @@ import Crypto from "Crypto" -pub fun main(): Bool { +access(self) fun main(): Bool { let keyList = Crypto.KeyList() let publicKey = PublicKey( diff --git a/runtime/stdlib/contracts/scripts/crypto_key_list_verify_missing_signature.cdc b/runtime/stdlib/contracts/scripts/crypto_key_list_verify_missing_signature.cdc index 5a57840443..ade85465e7 100644 --- a/runtime/stdlib/contracts/scripts/crypto_key_list_verify_missing_signature.cdc +++ b/runtime/stdlib/contracts/scripts/crypto_key_list_verify_missing_signature.cdc @@ -1,6 +1,6 @@ import Crypto from "Crypto" -pub fun main(): Bool { +access(self) fun main(): Bool { let keyList = Crypto.KeyList() let publicKey = PublicKey( diff --git a/runtime/stdlib/contracts/scripts/crypto_key_list_verify_revoked.cdc b/runtime/stdlib/contracts/scripts/crypto_key_list_verify_revoked.cdc index 43d6dba9c4..f394f69152 100644 --- a/runtime/stdlib/contracts/scripts/crypto_key_list_verify_revoked.cdc +++ b/runtime/stdlib/contracts/scripts/crypto_key_list_verify_revoked.cdc @@ -1,6 +1,6 @@ import Crypto from "Crypto" -pub fun main(): Bool { +access(self) fun main(): Bool { let keyList = Crypto.KeyList() let publicKey = PublicKey( diff --git a/runtime/stdlib/contracts/scripts/crypto_revoke_key_from_list.cdc b/runtime/stdlib/contracts/scripts/crypto_revoke_key_from_list.cdc index ee8b6d875b..9b2de1477b 100644 --- a/runtime/stdlib/contracts/scripts/crypto_revoke_key_from_list.cdc +++ b/runtime/stdlib/contracts/scripts/crypto_revoke_key_from_list.cdc @@ -1,6 +1,6 @@ import Crypto from "Crypto" -pub fun main(): Bool { +access(self) fun main(): Bool { let keyList = Crypto.KeyList() let publicKey = PublicKey( diff --git a/runtime/tests/checker/interface_test.go b/runtime/tests/checker/interface_test.go index 3b3975d53b..97b9dcf134 100644 --- a/runtime/tests/checker/interface_test.go +++ b/runtime/tests/checker/interface_test.go @@ -3113,11 +3113,11 @@ func TestCheckInterfaceInheritance(t *testing.T) { _, err := ParseAndCheck(t, ` struct interface Foo { - access(account) var x: String + access(all) var x: String } struct interface Bar: Foo { - access(all) var x: String + access(account) var x: String } `) diff --git a/runtime/tests/interpreter/entitlements_test.go b/runtime/tests/interpreter/entitlements_test.go index 145e7ed478..99557ac05b 100644 --- a/runtime/tests/interpreter/entitlements_test.go +++ b/runtime/tests/interpreter/entitlements_test.go @@ -593,7 +593,7 @@ func TestInterpretEntitledReferenceCasting(t *testing.T) { fun test(): Bool { account.save(3, to: /storage/foo) - let capX = account.getCapability(/access(all)lic/foo) + let capX = account.getCapability(/public/foo) let upCap = capX as Capability return upCap as? Capability == nil } @@ -625,7 +625,7 @@ func TestInterpretEntitledReferenceCasting(t *testing.T) { fun test(): Bool { account.save(3, to: /storage/foo) - let capX = account.getCapability(/access(all)lic/foo) + let capX = account.getCapability(/public/foo) let upCap = capX as Capability return upCap as? Capability == nil } @@ -911,8 +911,8 @@ func TestInterpretCapabilityEntitlements(t *testing.T) { fun test(): &R { let r <- create R() account.save(<-r, to: /storage/foo) - account.link(/access(all)lic/foo, target: /storage/foo) - let cap = account.getCapability(/access(all)lic/foo) + account.link(/public/foo, target: /storage/foo) + let cap = account.getCapability(/public/foo) return cap.borrow()! } `, @@ -938,8 +938,8 @@ func TestInterpretCapabilityEntitlements(t *testing.T) { fun test(): &R? { let r <- create R() account.save(<-r, to: /storage/foo) - account.link(/access(all)lic/foo, target: /storage/foo) - let cap = account.getCapability(/access(all)lic/foo) + account.link(/public/foo, target: /storage/foo) + let cap = account.getCapability(/public/foo) return cap.borrow()! as? auth(X, Y) &R } `, @@ -972,8 +972,8 @@ func TestInterpretCapabilityEntitlements(t *testing.T) { fun test(): &R { let r <- create R() account.save(<-r, to: /storage/foo) - account.link(/access(all)lic/foo, target: /storage/foo) - let cap = account.getCapability(/access(all)lic/foo) + account.link(/public/foo, target: /storage/foo) + let cap = account.getCapability(/public/foo) cap.borrow()! as? auth(X, Y) &R return cap.borrow()! as! auth(X, Y) &R } @@ -999,8 +999,8 @@ func TestInterpretCapabilityEntitlements(t *testing.T) { fun test(): Bool { let s = S() account.save(s, to: /storage/foo) - account.link(/access(all)lic/foo, target: /storage/foo) - let cap: Capability = account.getCapability(/access(all)lic/foo) + account.link(/public/foo, target: /storage/foo) + let cap: Capability = account.getCapability(/public/foo) let runtimeType = cap.getType() let upcastCap = cap as Capability<&S> let upcastRuntimeType = upcastCap.getType() @@ -1034,8 +1034,8 @@ func TestInterpretCapabilityEntitlements(t *testing.T) { fun test(): Bool { let s = S() account.save(s, to: /storage/foo) - account.link<&S>(/access(all)lic/foo, target: /storage/foo) - let cap: Capability<&S> = account.getCapability<&S>(/access(all)lic/foo) + account.link<&S>(/public/foo, target: /storage/foo) + let cap: Capability<&S> = account.getCapability<&S>(/public/foo) let runtimeType = cap.getType() let upcastCap = cap as Capability<&AnyStruct> let upcastRuntimeType = upcastCap.getType() @@ -1071,8 +1071,8 @@ func TestInterpretCapabilityEntitlements(t *testing.T) { fun test(): Bool { let r <- create R() account.save(<-r, to: /storage/foo) - account.link(/access(all)lic/foo, target: /storage/foo) - let cap = account.getCapability(/access(all)lic/foo) + account.link(/public/foo, target: /storage/foo) + let cap = account.getCapability(/public/foo) return cap.check() } `, @@ -1105,8 +1105,8 @@ func TestInterpretCapabilityEntitlements(t *testing.T) { fun test(): &R { let r <- create R() account.save(<-r, to: /storage/foo) - account.link(/access(all)lic/foo, target: /storage/foo) - let cap = account.getCapability(/access(all)lic/foo) + account.link(/public/foo, target: /storage/foo) + let cap = account.getCapability(/public/foo) return cap.borrow()! } `, @@ -1134,8 +1134,8 @@ func TestInterpretCapabilityEntitlements(t *testing.T) { fun test(): Bool { let r <- create R() account.save(<-r, to: /storage/foo) - account.link(/access(all)lic/foo, target: /storage/foo) - let cap = account.getCapability(/access(all)lic/foo) + account.link(/public/foo, target: /storage/foo) + let cap = account.getCapability(/public/foo) return cap.check() } `, diff --git a/runtime/tests/interpreter/memory_metering_test.go b/runtime/tests/interpreter/memory_metering_test.go index cce7dfafef..796cad6933 100644 --- a/runtime/tests/interpreter/memory_metering_test.go +++ b/runtime/tests/interpreter/memory_metering_test.go @@ -8540,8 +8540,8 @@ func TestInterpretASTMetering(t *testing.T) { _, err := inter.Invoke("main") require.NoError(t, err) - assert.Equal(t, uint64(229), meter.getMemory(common.MemoryKindPosition)) - assert.Equal(t, uint64(124), meter.getMemory(common.MemoryKindRange)) + assert.Equal(t, uint64(271), meter.getMemory(common.MemoryKindPosition)) + assert.Equal(t, uint64(145), meter.getMemory(common.MemoryKindRange)) }) t.Run("locations", func(t *testing.T) { diff --git a/tools/batch-script/get_contracts.cdc b/tools/batch-script/get_contracts.cdc index 6a523a211e..2d1cfef5e0 100644 --- a/tools/batch-script/get_contracts.cdc +++ b/tools/batch-script/get_contracts.cdc @@ -1,4 +1,4 @@ -pub fun main(addresses: [Address]): {Address: {String: String}} { +access(self) fun main(addresses: [Address]): {Address: {String: String}} { let accountContracts: {Address: {String: String}} = {} for address in addresses { From f6bbff6fff7ccc7df60787632fe0a268c0d88516 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Wed, 14 Jun 2023 10:42:42 -0400 Subject: [PATCH 11/20] update capcons implementation to have a setTag function --- runtime/capabilitycontrollers_test.go | 4 +-- .../value_accountcapabilitycontroller.go | 33 ++++++++----------- .../value_storagecapabilitycontroller.go | 32 ++++++++---------- .../sema/account_capability_controller.cdc | 3 ++ .../sema/account_capability_controller.gen.go | 26 +++++++++++++++ .../sema/storage_capability_controller.cdc | 3 ++ .../sema/storage_capability_controller.gen.go | 26 +++++++++++++++ runtime/stdlib/account.go | 30 +++++++++++++++++ .../checker/capability_controller_test.go | 4 +-- 9 files changed, 118 insertions(+), 43 deletions(-) diff --git a/runtime/capabilitycontrollers_test.go b/runtime/capabilitycontrollers_test.go index b981d18e2c..7e8ba64427 100644 --- a/runtime/capabilitycontrollers_test.go +++ b/runtime/capabilitycontrollers_test.go @@ -2528,7 +2528,7 @@ func TestRuntimeCapabilityControllers(t *testing.T) { assert(controller2.tag == "") // Act - controller1.tag = "something" + controller1.setTag("something") // Assert let controller3: &StorageCapabilityController = @@ -3005,7 +3005,7 @@ func TestRuntimeCapabilityControllers(t *testing.T) { assert(controller2.tag == "") // Act - controller1.tag = "something" + controller1.setTag("something") // Assert let controller3: &AccountCapabilityController = diff --git a/runtime/interpreter/value_accountcapabilitycontroller.go b/runtime/interpreter/value_accountcapabilitycontroller.go index 3cbf569cce..38269a9a6d 100644 --- a/runtime/interpreter/value_accountcapabilitycontroller.go +++ b/runtime/interpreter/value_accountcapabilitycontroller.go @@ -33,9 +33,9 @@ type AccountCapabilityControllerValue struct { BorrowType ReferenceStaticType CapabilityID UInt64Value - // tag is locally cached result of GetTag, and not stored. - // It is populated when the field `tag` is read. - tag *StringValue + // Tag is locally cached result of GetTag, and not stored. + // It is populated when the field `Tag` is read. + Tag *StringValue // Injected functions // Tags are not stored directly inside the controller @@ -44,6 +44,7 @@ type AccountCapabilityControllerValue struct { GetTag func() *StringValue SetTag func(*StringValue) DeleteFunction FunctionValue + SetTagFunction FunctionValue } func NewUnmeteredAccountCapabilityControllerValue( @@ -195,13 +196,15 @@ func (v *AccountCapabilityControllerValue) GetMember(inter *Interpreter, _ Locat switch name { case sema.AccountCapabilityControllerTypeTagFieldName: - if v.tag == nil { - v.tag = v.GetTag() - if v.tag == nil { - v.tag = EmptyString + if v.Tag == nil { + v.Tag = v.GetTag() + if v.Tag == nil { + v.Tag = EmptyString } } - return v.tag + return v.Tag + case sema.AccountCapabilityControllerTypeSetTagFunctionName: + return v.SetTagFunction case sema.AccountCapabilityControllerTypeCapabilityIDFieldName: return v.CapabilityID @@ -217,22 +220,12 @@ func (v *AccountCapabilityControllerValue) GetMember(inter *Interpreter, _ Locat } func (*AccountCapabilityControllerValue) RemoveMember(_ *Interpreter, _ LocationRange, _ string) Value { - // Storage capability controllers have no removable members (fields / functions) + // Account capability controllers have no removable members (fields / functions) panic(errors.NewUnreachableError()) } func (v *AccountCapabilityControllerValue) SetMember(_ *Interpreter, _ LocationRange, identifier string, value Value) bool { - switch identifier { - case sema.AccountCapabilityControllerTypeTagFieldName: - stringValue, ok := value.(*StringValue) - if !ok { - panic(errors.NewUnreachableError()) - } - v.tag = stringValue - v.SetTag(stringValue) - return true - } - + // Account capability controllers have no settable members (fields / functions) panic(errors.NewUnreachableError()) } diff --git a/runtime/interpreter/value_storagecapabilitycontroller.go b/runtime/interpreter/value_storagecapabilitycontroller.go index f36e92ce6e..0102c0d8e9 100644 --- a/runtime/interpreter/value_storagecapabilitycontroller.go +++ b/runtime/interpreter/value_storagecapabilitycontroller.go @@ -45,9 +45,9 @@ type StorageCapabilityControllerValue struct { CapabilityID UInt64Value TargetPath PathValue - // tag is locally cached result of GetTag, and not stored. - // It is populated when the field `tag` is read. - tag *StringValue + // Tag is locally cached result of GetTag, and not stored. + // It is populated when the field `Tag` is read. + Tag *StringValue // Injected functions. // Tags are not stored directly inside the controller @@ -58,6 +58,7 @@ type StorageCapabilityControllerValue struct { TargetFunction FunctionValue RetargetFunction FunctionValue DeleteFunction FunctionValue + SetTagFunction FunctionValue } func NewUnmeteredStorageCapabilityControllerValue( @@ -219,13 +220,16 @@ func (v *StorageCapabilityControllerValue) GetMember(inter *Interpreter, _ Locat switch name { case sema.StorageCapabilityControllerTypeTagFieldName: - if v.tag == nil { - v.tag = v.GetTag() - if v.tag == nil { - v.tag = EmptyString + if v.Tag == nil { + v.Tag = v.GetTag() + if v.Tag == nil { + v.Tag = EmptyString } } - return v.tag + return v.Tag + + case sema.StorageCapabilityControllerTypeSetTagFunctionName: + return v.SetTagFunction case sema.StorageCapabilityControllerTypeCapabilityIDFieldName: return v.CapabilityID @@ -252,17 +256,7 @@ func (*StorageCapabilityControllerValue) RemoveMember(_ *Interpreter, _ Location } func (v *StorageCapabilityControllerValue) SetMember(_ *Interpreter, _ LocationRange, identifier string, value Value) bool { - switch identifier { - case sema.StorageCapabilityControllerTypeTagFieldName: - stringValue, ok := value.(*StringValue) - if !ok { - panic(errors.NewUnreachableError()) - } - v.tag = stringValue - v.SetTag(stringValue) - return true - } - + // Storage capability controllers have no settable members (fields / functions) panic(errors.NewUnreachableError()) } diff --git a/runtime/sema/account_capability_controller.cdc b/runtime/sema/account_capability_controller.cdc index 7bfd3f9e78..e1813cfe0d 100644 --- a/runtime/sema/account_capability_controller.cdc +++ b/runtime/sema/account_capability_controller.cdc @@ -5,6 +5,9 @@ access(all) struct AccountCapabilityController { /// Empty by default. access(all) var tag: String + /// Updates this controller's tag to the provided string + access(all) fun setTag(_ tag: String) + /// The type of the controlled capability, i.e. the T in `Capability`. access(all) let borrowType: Type diff --git a/runtime/sema/account_capability_controller.gen.go b/runtime/sema/account_capability_controller.gen.go index 54f153695e..2d2d0841a9 100644 --- a/runtime/sema/account_capability_controller.gen.go +++ b/runtime/sema/account_capability_controller.gen.go @@ -31,6 +31,25 @@ For example, it could be used to describe the purpose of the capability. Empty by default. ` +const AccountCapabilityControllerTypeSetTagFunctionName = "setTag" + +var AccountCapabilityControllerTypeSetTagFunctionType = &FunctionType{ + Parameters: []Parameter{ + { + Label: ArgumentLabelNotRequired, + Identifier: "tag", + TypeAnnotation: NewTypeAnnotation(StringType), + }, + }, + ReturnTypeAnnotation: NewTypeAnnotation( + VoidType, + ), +} + +const AccountCapabilityControllerTypeSetTagFunctionDocString = ` +Updates this controller's tag to the provided string +` + const AccountCapabilityControllerTypeBorrowTypeFieldName = "borrowType" var AccountCapabilityControllerTypeBorrowTypeFieldType = MetaType @@ -95,6 +114,13 @@ func init() { AccountCapabilityControllerTypeTagFieldType, AccountCapabilityControllerTypeTagFieldDocString, ), + NewUnmeteredFunctionMember( + t, + ast.AccessAll, + AccountCapabilityControllerTypeSetTagFunctionName, + AccountCapabilityControllerTypeSetTagFunctionType, + AccountCapabilityControllerTypeSetTagFunctionDocString, + ), NewUnmeteredFieldMember( t, ast.AccessAll, diff --git a/runtime/sema/storage_capability_controller.cdc b/runtime/sema/storage_capability_controller.cdc index c7260a20b8..7d70961630 100644 --- a/runtime/sema/storage_capability_controller.cdc +++ b/runtime/sema/storage_capability_controller.cdc @@ -5,6 +5,9 @@ access(all) struct StorageCapabilityController { /// Empty by default. access(all) var tag: String + /// Updates this controller's tag to the provided string + access(all) fun setTag(_ tag: String) + /// The type of the controlled capability, i.e. the T in `Capability`. access(all) let borrowType: Type diff --git a/runtime/sema/storage_capability_controller.gen.go b/runtime/sema/storage_capability_controller.gen.go index 3b29f2cd84..ac353f248e 100644 --- a/runtime/sema/storage_capability_controller.gen.go +++ b/runtime/sema/storage_capability_controller.gen.go @@ -31,6 +31,25 @@ For example, it could be used to describe the purpose of the capability. Empty by default. ` +const StorageCapabilityControllerTypeSetTagFunctionName = "setTag" + +var StorageCapabilityControllerTypeSetTagFunctionType = &FunctionType{ + Parameters: []Parameter{ + { + Label: ArgumentLabelNotRequired, + Identifier: "tag", + TypeAnnotation: NewTypeAnnotation(StringType), + }, + }, + ReturnTypeAnnotation: NewTypeAnnotation( + VoidType, + ), +} + +const StorageCapabilityControllerTypeSetTagFunctionDocString = ` +Updates this controller's tag to the provided string +` + const StorageCapabilityControllerTypeBorrowTypeFieldName = "borrowType" var StorageCapabilityControllerTypeBorrowTypeFieldType = MetaType @@ -127,6 +146,13 @@ func init() { StorageCapabilityControllerTypeTagFieldType, StorageCapabilityControllerTypeTagFieldDocString, ), + NewUnmeteredFunctionMember( + t, + ast.AccessAll, + StorageCapabilityControllerTypeSetTagFunctionName, + StorageCapabilityControllerTypeSetTagFunctionType, + StorageCapabilityControllerTypeSetTagFunctionDocString, + ), NewUnmeteredFieldMember( t, ast.AccessAll, diff --git a/runtime/stdlib/account.go b/runtime/stdlib/account.go index a6bca38b3b..09bf0a9833 100644 --- a/runtime/stdlib/account.go +++ b/runtime/stdlib/account.go @@ -2615,6 +2615,21 @@ func getCapabilityController( newStorageCapabilityControllerRetargetFunction(inter, address, controller) controller.DeleteFunction = newStorageCapabilityControllerDeleteFunction(inter, address, controller) + controller.SetTagFunction = interpreter.NewHostFunctionValue( + inter, + sema.StorageCapabilityControllerTypeSetTagFunctionType, + func(invocation interpreter.Invocation) interpreter.Value { + newTagValue, ok := invocation.Arguments[0].(*interpreter.StringValue) + if !ok { + panic(errors.NewUnreachableError()) + } + + controller.Tag = newTagValue + controller.SetTag(newTagValue) + + return interpreter.Void + }, + ) case *interpreter.AccountCapabilityControllerValue: controller.GetTag = @@ -2624,6 +2639,21 @@ func getCapabilityController( controller.DeleteFunction = newAccountCapabilityControllerDeleteFunction(inter, address, controller) + controller.SetTagFunction = interpreter.NewHostFunctionValue( + inter, + sema.AccountCapabilityControllerTypeSetTagFunctionType, + func(invocation interpreter.Invocation) interpreter.Value { + newTagValue, ok := invocation.Arguments[0].(*interpreter.StringValue) + if !ok { + panic(errors.NewUnreachableError()) + } + + controller.Tag = newTagValue + controller.SetTag(newTagValue) + + return interpreter.Void + }, + ) } return controller diff --git a/runtime/tests/checker/capability_controller_test.go b/runtime/tests/checker/capability_controller_test.go index 7fd5e27b04..12de0e7116 100644 --- a/runtime/tests/checker/capability_controller_test.go +++ b/runtime/tests/checker/capability_controller_test.go @@ -80,7 +80,7 @@ func TestCheckStorageCapabilityController(t *testing.T) { let _: Void = controller.retarget(/storage/test) fun setTag() { - controller.tag = "something" + controller.setTag("something") } `) @@ -138,7 +138,7 @@ func TestCheckAccountCapabilityController(t *testing.T) { let capabilityID: UInt64 = controller.capabilityID fun setTag() { - controller.tag = "something" + controller.setTag("something") } `) From ec8e2047ab093a15efe8e8dbac5883c0eccf3ebd Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Tue, 20 Jun 2023 14:27:48 -0400 Subject: [PATCH 12/20] respond to review --- examples/quicksort.cdc | 4 ++-- runtime/resourcedictionary_test.go | 8 ++++---- runtime/tests/interpreter/resources_test.go | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/examples/quicksort.cdc b/examples/quicksort.cdc index 55f173a026..b11c1e8b03 100644 --- a/examples/quicksort.cdc +++ b/examples/quicksort.cdc @@ -4,7 +4,7 @@ /// > Our version of quicksort is not the fastest possible, /// > but it's one of the simplest. /// -access(self) fun quickSort(_ items: &[AnyStruct], isLess: ((Int, Int): Bool)) { +access(all) fun quickSort(_ items: &[AnyStruct], isLess: ((Int, Int): Bool)) { fun quickSortPart(leftIndex: Int, rightIndex: Int) { @@ -38,7 +38,7 @@ access(self) fun quickSort(_ items: &[AnyStruct], isLess: ((Int, Int): Bool)) { ) } -access(self) fun main() { +access(all) fun main() { let items = [5, 3, 7, 6, 2, 9] quickSort( &items as &[AnyStruct], diff --git a/runtime/resourcedictionary_test.go b/runtime/resourcedictionary_test.go index 8dc82aef6e..b511bceb9c 100644 --- a/runtime/resourcedictionary_test.go +++ b/runtime/resourcedictionary_test.go @@ -615,7 +615,7 @@ func TestRuntimeResourceDictionaryValues_DictionaryTransfer(t *testing.T) { access(all) var rs: @{String: R} - access(all) fun setRs(_ s: String, _ r: @R) { + access(all) fun setRs(key s: String, r: @R) { self.rs[s] <-! r } @@ -653,8 +653,8 @@ func TestRuntimeResourceDictionaryValues_DictionaryTransfer(t *testing.T) { prepare(signer1: AuthAccount, signer2: AuthAccount) { let c <- Test.createC() - c.setRs("a", <- Test.createR(1)) - c.setRs("b", <- Test.createR(2)) + c.setRs(key: "a", r: <- Test.createR(1)) + c.setRs(key: "b", r: <- Test.createR(2)) signer1.save(<-c, to: /storage/c) } } @@ -727,7 +727,7 @@ func TestRuntimeResourceDictionaryValues_DictionaryTransfer(t *testing.T) { prepare(signer1: AuthAccount, signer2: AuthAccount) { let c <- signer1.load<@Test.C>(from: /storage/c) ?? panic("missing C") - c.setRs("x", <- Test.createR(42)) + c.setRs(key: "x", r: <- Test.createR(42)) signer2.save(<-c, to: /storage/c2) } } diff --git a/runtime/tests/interpreter/resources_test.go b/runtime/tests/interpreter/resources_test.go index 95ad8ec71b..8748b222b1 100644 --- a/runtime/tests/interpreter/resources_test.go +++ b/runtime/tests/interpreter/resources_test.go @@ -402,11 +402,11 @@ func TestInterpretImplicitResourceRemovalFromContainer(t *testing.T) { resource R1 { access(all) var r2s: @{Int: R2} - access(all) fun setR2(_ i: Int, _ r: @R2) { + access(all) fun setR2(i: Int, r: @R2) { self.r2s[i] <-! r } - access(all) fun move(_ i: Int, _ r: @R2?): @R2? { + access(all) fun move(i: Int, r: @R2?): @R2? { let optR2 <- self.r2s[i] <- r return <- optR2 } @@ -425,11 +425,11 @@ func TestInterpretImplicitResourceRemovalFromContainer(t *testing.T) { } fun test(r1: &R1): String? { - r1.setR2(0, <- create R2()) + r1.setR2(i: 0, r: <- create R2()) // The second assignment should not lead to the resource being cleared, // it must be fully moved out of this container before, // not just assigned to the new variable - let optR2 <- r1.move(0, nil) + let optR2 <- r1.move(i: 0, r: nil) let value = optR2?.value destroy optR2 return value From 13b16931532c6916ee52d9a01dcf74fb37924066 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Wed, 21 Jun 2023 12:40:19 -0400 Subject: [PATCH 13/20] respond to review --- .../value_accountcapabilitycontroller.go | 37 +++++++++++++++---- .../value_storagecapabilitycontroller.go | 37 +++++++++++++++---- runtime/stdlib/account.go | 34 ++--------------- 3 files changed, 62 insertions(+), 46 deletions(-) diff --git a/runtime/interpreter/value_accountcapabilitycontroller.go b/runtime/interpreter/value_accountcapabilitycontroller.go index 38269a9a6d..612ae3536b 100644 --- a/runtime/interpreter/value_accountcapabilitycontroller.go +++ b/runtime/interpreter/value_accountcapabilitycontroller.go @@ -33,9 +33,9 @@ type AccountCapabilityControllerValue struct { BorrowType ReferenceStaticType CapabilityID UInt64Value - // Tag is locally cached result of GetTag, and not stored. - // It is populated when the field `Tag` is read. - Tag *StringValue + // tag is locally cached result of GetTag, and not stored. + // It is populated when the field `tag` is read. + tag *StringValue // Injected functions // Tags are not stored directly inside the controller @@ -196,13 +196,13 @@ func (v *AccountCapabilityControllerValue) GetMember(inter *Interpreter, _ Locat switch name { case sema.AccountCapabilityControllerTypeTagFieldName: - if v.Tag == nil { - v.Tag = v.GetTag() - if v.Tag == nil { - v.Tag = EmptyString + if v.tag == nil || v.tag.graphemes == nil { + v.tag = v.GetTag() + if v.tag == nil { + v.tag = EmptyString } } - return v.Tag + return v.tag case sema.AccountCapabilityControllerTypeSetTagFunctionName: return v.SetTagFunction @@ -269,3 +269,24 @@ func (v *AccountCapabilityControllerValue) SetDeleted(gauge common.MemoryGauge) panicHostFunction, ) } + +func NewAccountCapabilityControllerSetTagFunction( + inter *Interpreter, + controller *AccountCapabilityControllerValue, +) *HostFunctionValue { + return NewHostFunctionValue( + inter, + sema.AccountCapabilityControllerTypeSetTagFunctionType, + func(invocation Invocation) Value { + newTagValue, ok := invocation.Arguments[0].(*StringValue) + if !ok { + panic(errors.NewUnreachableError()) + } + + controller.tag = newTagValue + controller.SetTag(newTagValue) + + return Void + }, + ) +} diff --git a/runtime/interpreter/value_storagecapabilitycontroller.go b/runtime/interpreter/value_storagecapabilitycontroller.go index 0102c0d8e9..65c6d22969 100644 --- a/runtime/interpreter/value_storagecapabilitycontroller.go +++ b/runtime/interpreter/value_storagecapabilitycontroller.go @@ -45,9 +45,9 @@ type StorageCapabilityControllerValue struct { CapabilityID UInt64Value TargetPath PathValue - // Tag is locally cached result of GetTag, and not stored. - // It is populated when the field `Tag` is read. - Tag *StringValue + // tag is locally cached result of GetTag, and not stored. + // It is populated when the field `tag` is read. + tag *StringValue // Injected functions. // Tags are not stored directly inside the controller @@ -220,13 +220,13 @@ func (v *StorageCapabilityControllerValue) GetMember(inter *Interpreter, _ Locat switch name { case sema.StorageCapabilityControllerTypeTagFieldName: - if v.Tag == nil { - v.Tag = v.GetTag() - if v.Tag == nil { - v.Tag = EmptyString + if v.tag == nil || v.tag.graphemes == nil { + v.tag = v.GetTag() + if v.tag == nil { + v.tag = EmptyString } } - return v.Tag + return v.tag case sema.StorageCapabilityControllerTypeSetTagFunctionName: return v.SetTagFunction @@ -310,3 +310,24 @@ func (v *StorageCapabilityControllerValue) SetDeleted(gauge common.MemoryGauge) panicHostFunction, ) } + +func NewStorageCapabilityControllerSetTagFunction( + inter *Interpreter, + controller *StorageCapabilityControllerValue, +) *HostFunctionValue { + return NewHostFunctionValue( + inter, + sema.StorageCapabilityControllerTypeSetTagFunctionType, + func(invocation Invocation) Value { + newTagValue, ok := invocation.Arguments[0].(*StringValue) + if !ok { + panic(errors.NewUnreachableError()) + } + + controller.tag = newTagValue + controller.SetTag(newTagValue) + + return Void + }, + ) +} diff --git a/runtime/stdlib/account.go b/runtime/stdlib/account.go index 09bf0a9833..24a3772ce0 100644 --- a/runtime/stdlib/account.go +++ b/runtime/stdlib/account.go @@ -2615,21 +2615,8 @@ func getCapabilityController( newStorageCapabilityControllerRetargetFunction(inter, address, controller) controller.DeleteFunction = newStorageCapabilityControllerDeleteFunction(inter, address, controller) - controller.SetTagFunction = interpreter.NewHostFunctionValue( - inter, - sema.StorageCapabilityControllerTypeSetTagFunctionType, - func(invocation interpreter.Invocation) interpreter.Value { - newTagValue, ok := invocation.Arguments[0].(*interpreter.StringValue) - if !ok { - panic(errors.NewUnreachableError()) - } - - controller.Tag = newTagValue - controller.SetTag(newTagValue) - - return interpreter.Void - }, - ) + controller.SetTagFunction = + interpreter.NewStorageCapabilityControllerSetTagFunction(inter, controller) case *interpreter.AccountCapabilityControllerValue: controller.GetTag = @@ -2639,21 +2626,8 @@ func getCapabilityController( controller.DeleteFunction = newAccountCapabilityControllerDeleteFunction(inter, address, controller) - controller.SetTagFunction = interpreter.NewHostFunctionValue( - inter, - sema.AccountCapabilityControllerTypeSetTagFunctionType, - func(invocation interpreter.Invocation) interpreter.Value { - newTagValue, ok := invocation.Arguments[0].(*interpreter.StringValue) - if !ok { - panic(errors.NewUnreachableError()) - } - - controller.Tag = newTagValue - controller.SetTag(newTagValue) - - return interpreter.Void - }, - ) + controller.SetTagFunction = + interpreter.NewAccountCapabilityControllerSetTagFunction(inter, controller) } return controller From 4b3816a9fd88fb4d6ded4590efc4c3b4479614e1 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Wed, 21 Jun 2023 13:06:37 -0400 Subject: [PATCH 14/20] customized errors for parsing pub and priv --- runtime/parser/declaration.go | 6 ++++ runtime/parser/declaration_test.go | 56 ++++++++++++++++++++++++++++++ runtime/parser/keyword.go | 2 ++ 3 files changed, 64 insertions(+) diff --git a/runtime/parser/declaration.go b/runtime/parser/declaration.go index 3750c55754..62f435c1f1 100644 --- a/runtime/parser/declaration.go +++ b/runtime/parser/declaration.go @@ -214,6 +214,9 @@ func parseDeclaration(p *parser, docString string) (ast.Declaration, error) { purity = parsePurityAnnotation(p) continue + case KeywordPub, KeywordPriv: + return nil, p.syntaxError(fmt.Sprintf("`%s` is no longer a valid access keyword", p.currentTokenSource())) + case KeywordAccess: if access != ast.AccessNotSpecified { return nil, p.syntaxError("invalid second access modifier") @@ -1640,6 +1643,9 @@ func parseMemberOrNestedDeclaration(p *parser, docString string) (ast.Declaratio purity = parsePurityAnnotation(p) continue + case KeywordPub, KeywordPriv: + return nil, p.syntaxError(fmt.Sprintf("`%s` is no longer a valid access keyword", p.currentTokenSource())) + case KeywordAccess: if access != ast.AccessNotSpecified { return nil, p.syntaxError("invalid second access modifier") diff --git a/runtime/parser/declaration_test.go b/runtime/parser/declaration_test.go index 9eede1c8d2..260fdb52d7 100644 --- a/runtime/parser/declaration_test.go +++ b/runtime/parser/declaration_test.go @@ -9432,3 +9432,59 @@ func TestSoftKeywordsInFunctionDeclaration(t *testing.T) { testSoftKeyword(keyword) } } + +func TestParseDeprecatedAccessModifiers(t *testing.T) { + + t.Parallel() + + t.Run("pub", func(t *testing.T) { + + t.Parallel() + + _, errs := testParseDeclarations(" pub fun foo ( ) { }") + utils.AssertEqualWithDiff(t, + []error{ + &SyntaxError{ + Message: "`pub` is no longer a valid access keyword", + Pos: ast.Position{Offset: 1, Line: 1, Column: 1}, + }, + }, + errs, + ) + + }) + + t.Run("priv", func(t *testing.T) { + + t.Parallel() + + _, errs := testParseDeclarations(" priv fun foo ( ) { }") + utils.AssertEqualWithDiff(t, + []error{ + &SyntaxError{ + Message: "`priv` is no longer a valid access keyword", + Pos: ast.Position{Offset: 1, Line: 1, Column: 1}, + }, + }, + errs, + ) + + }) + + t.Run("pub(set)", func(t *testing.T) { + + t.Parallel() + + _, errs := testParseDeclarations(" pub(set) fun foo ( ) { }") + utils.AssertEqualWithDiff(t, + []error{ + &SyntaxError{ + Message: "`pub` is no longer a valid access keyword", + Pos: ast.Position{Offset: 1, Line: 1, Column: 1}, + }, + }, + errs, + ) + + }) +} diff --git a/runtime/parser/keyword.go b/runtime/parser/keyword.go index 587e3854d3..bb89e6a8fa 100644 --- a/runtime/parser/keyword.go +++ b/runtime/parser/keyword.go @@ -73,6 +73,8 @@ const ( KeywordRequire = "require" KeywordStatic = "static" KeywordNative = "native" + KeywordPub = "pub" + KeywordPriv = "priv" // NOTE: ensure to update allKeywords when adding a new keyword ) From d4082cf29601d0cd3276e8c38e60b05770476776 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Wed, 21 Jun 2023 13:44:10 -0400 Subject: [PATCH 15/20] respond to review --- .../interpreter/value_accountcapabilitycontroller.go | 12 +++++++----- .../interpreter/value_storagecapabilitycontroller.go | 12 +++++++----- runtime/stdlib/account.go | 4 ---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/runtime/interpreter/value_accountcapabilitycontroller.go b/runtime/interpreter/value_accountcapabilitycontroller.go index 612ae3536b..70a39ed941 100644 --- a/runtime/interpreter/value_accountcapabilitycontroller.go +++ b/runtime/interpreter/value_accountcapabilitycontroller.go @@ -44,7 +44,7 @@ type AccountCapabilityControllerValue struct { GetTag func() *StringValue SetTag func(*StringValue) DeleteFunction FunctionValue - SetTagFunction FunctionValue + setTagFunction FunctionValue } func NewUnmeteredAccountCapabilityControllerValue( @@ -196,7 +196,7 @@ func (v *AccountCapabilityControllerValue) GetMember(inter *Interpreter, _ Locat switch name { case sema.AccountCapabilityControllerTypeTagFieldName: - if v.tag == nil || v.tag.graphemes == nil { + if v.tag == nil { v.tag = v.GetTag() if v.tag == nil { v.tag = EmptyString @@ -204,7 +204,10 @@ func (v *AccountCapabilityControllerValue) GetMember(inter *Interpreter, _ Locat } return v.tag case sema.AccountCapabilityControllerTypeSetTagFunctionName: - return v.SetTagFunction + if v.setTagFunction == nil { + v.setTagFunction = v.newSetTagFunction(inter) + } + return v.setTagFunction case sema.AccountCapabilityControllerTypeCapabilityIDFieldName: return v.CapabilityID @@ -270,9 +273,8 @@ func (v *AccountCapabilityControllerValue) SetDeleted(gauge common.MemoryGauge) ) } -func NewAccountCapabilityControllerSetTagFunction( +func (controller *AccountCapabilityControllerValue) newSetTagFunction( inter *Interpreter, - controller *AccountCapabilityControllerValue, ) *HostFunctionValue { return NewHostFunctionValue( inter, diff --git a/runtime/interpreter/value_storagecapabilitycontroller.go b/runtime/interpreter/value_storagecapabilitycontroller.go index 65c6d22969..3c7904e02e 100644 --- a/runtime/interpreter/value_storagecapabilitycontroller.go +++ b/runtime/interpreter/value_storagecapabilitycontroller.go @@ -58,7 +58,7 @@ type StorageCapabilityControllerValue struct { TargetFunction FunctionValue RetargetFunction FunctionValue DeleteFunction FunctionValue - SetTagFunction FunctionValue + setTagFunction FunctionValue } func NewUnmeteredStorageCapabilityControllerValue( @@ -220,7 +220,7 @@ func (v *StorageCapabilityControllerValue) GetMember(inter *Interpreter, _ Locat switch name { case sema.StorageCapabilityControllerTypeTagFieldName: - if v.tag == nil || v.tag.graphemes == nil { + if v.tag == nil { v.tag = v.GetTag() if v.tag == nil { v.tag = EmptyString @@ -229,7 +229,10 @@ func (v *StorageCapabilityControllerValue) GetMember(inter *Interpreter, _ Locat return v.tag case sema.StorageCapabilityControllerTypeSetTagFunctionName: - return v.SetTagFunction + if v.setTagFunction == nil { + v.setTagFunction = v.newSetTagFunction(inter) + } + return v.setTagFunction case sema.StorageCapabilityControllerTypeCapabilityIDFieldName: return v.CapabilityID @@ -311,9 +314,8 @@ func (v *StorageCapabilityControllerValue) SetDeleted(gauge common.MemoryGauge) ) } -func NewStorageCapabilityControllerSetTagFunction( +func (controller *StorageCapabilityControllerValue) newSetTagFunction( inter *Interpreter, - controller *StorageCapabilityControllerValue, ) *HostFunctionValue { return NewHostFunctionValue( inter, diff --git a/runtime/stdlib/account.go b/runtime/stdlib/account.go index 24a3772ce0..a6bca38b3b 100644 --- a/runtime/stdlib/account.go +++ b/runtime/stdlib/account.go @@ -2615,8 +2615,6 @@ func getCapabilityController( newStorageCapabilityControllerRetargetFunction(inter, address, controller) controller.DeleteFunction = newStorageCapabilityControllerDeleteFunction(inter, address, controller) - controller.SetTagFunction = - interpreter.NewStorageCapabilityControllerSetTagFunction(inter, controller) case *interpreter.AccountCapabilityControllerValue: controller.GetTag = @@ -2626,8 +2624,6 @@ func getCapabilityController( controller.DeleteFunction = newAccountCapabilityControllerDeleteFunction(inter, address, controller) - controller.SetTagFunction = - interpreter.NewAccountCapabilityControllerSetTagFunction(inter, controller) } return controller From 111b15fddb201c0dbe5c1e6fb5f0e6810d42aa3f Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Wed, 21 Jun 2023 21:57:37 -0400 Subject: [PATCH 16/20] fix lint --- runtime/parser/declaration_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/runtime/parser/declaration_test.go b/runtime/parser/declaration_test.go index 260fdb52d7..e92ca29a6a 100644 --- a/runtime/parser/declaration_test.go +++ b/runtime/parser/declaration_test.go @@ -3106,7 +3106,7 @@ func TestParseCompositeDeclaration(t *testing.T) { FunctionDeclaration: &ast.FunctionDeclaration{ ParameterList: &ast.ParameterList{ Parameters: []*ast.Parameter{ - &ast.Parameter{ + { TypeAnnotation: &ast.TypeAnnotation{ Type: &ast.NominalType{ Identifier: ast.Identifier{ @@ -4093,7 +4093,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { }, }, RequiredEntitlements: []*ast.NominalType{ - &ast.NominalType{ + { Identifier: ast.Identifier{ Identifier: "X", Pos: ast.Position{ @@ -4103,7 +4103,7 @@ func TestParseAttachmentDeclaration(t *testing.T) { }, }, }, - &ast.NominalType{ + { Identifier: ast.Identifier{ Identifier: "Y", Pos: ast.Position{ From 57825165e4ad0043c7baabbbf98503734cb5ce32 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Wed, 21 Jun 2023 22:19:39 -0400 Subject: [PATCH 17/20] tidy --- go.mod | 3 ++- go.sum | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 6389697ac9..52669fba70 100644 --- a/go.mod +++ b/go.mod @@ -32,6 +32,7 @@ require ( require ( github.com/SaveTheRbtz/mph v0.1.2 github.com/bytecodealliance/wasmtime-go/v7 v7.0.0 + github.com/k0kubun/pp v3.0.1+incompatible github.com/k0kubun/pp/v3 v3.2.0 github.com/logrusorgru/aurora/v4 v4.0.0 ) @@ -41,7 +42,7 @@ require github.com/zeebo/xxh3 v1.0.2 // indirect require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/fxamacker/circlehash v0.3.0 // indirect - github.com/k0kubun/pp v3.0.1+incompatible // indirect + github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect github.com/klauspost/cpuid/v2 v2.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.16 // indirect diff --git a/go.sum b/go.sum index 989f27cdb8..5472e78ef4 100644 --- a/go.sum +++ b/go.sum @@ -20,6 +20,8 @@ github.com/go-test/deep v1.0.5 h1:AKODKU3pDH1RzZzm6YZu77YWtEAq6uh1rLIAQlay2qc= github.com/go-test/deep v1.0.5/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM= +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/k0kubun/pp v3.0.1+incompatible h1:3tqvf7QgUnZ5tXO6pNAZlrvHgl6DvifjDrd9g2S9Z40= github.com/k0kubun/pp v3.0.1+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= From 673a6bdebc0ca69ee33f2d8048811a9d3a5769ac Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Wed, 21 Jun 2023 22:32:25 -0400 Subject: [PATCH 18/20] fix go.cap file --- go.cap | 2 ++ 1 file changed, 2 insertions(+) diff --git a/go.cap b/go.cap index 34dba49742..3f478e7d36 100644 --- a/go.cap +++ b/go.cap @@ -2,6 +2,7 @@ github.com/onflow/cadence () github.com/davecgh/go-spew/spew (file) github.com/klauspost/cpuid/v2 (file, runtime) +github.com/mattn/go-colorable (file) github.com/onflow/cadence/runtime/errors (runtime) github.com/onflow/cadence/runtime/parser (file) github.com/onflow/cadence/runtime/pretty (runtime) @@ -9,4 +10,5 @@ github.com/stretchr/testify/assert (runtime, file, network) github.com/stretchr/testify/require (network) github.com/texttheater/golang-levenshtein/levenshtein (file) github.com/zeebo/blake3/internal/consts (file) +golang.org/x/sys/unix (file) golang.org/x/xerrors (runtime) From 590d03ff80ffc58e5d67818424dccc5ab1ed4acd Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Wed, 21 Jun 2023 22:36:14 -0400 Subject: [PATCH 19/20] fix go.cap file --- go.cap | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/go.cap b/go.cap index 3f478e7d36..1a308b6451 100644 --- a/go.cap +++ b/go.cap @@ -1,6 +1,7 @@ github.com/onflow/cadence () github.com/davecgh/go-spew/spew (file) +github.com/k0kubun/pp (file) github.com/klauspost/cpuid/v2 (file, runtime) github.com/mattn/go-colorable (file) github.com/onflow/cadence/runtime/errors (runtime) @@ -10,5 +11,5 @@ github.com/stretchr/testify/assert (runtime, file, network) github.com/stretchr/testify/require (network) github.com/texttheater/golang-levenshtein/levenshtein (file) github.com/zeebo/blake3/internal/consts (file) -golang.org/x/sys/unix (file) +golang.org/x/sys/unix (runtime, syscall) golang.org/x/xerrors (runtime) From 5a79182498123da120deeb2df45ba7a48446e660 Mon Sep 17 00:00:00 2001 From: Daniel Sainati Date: Wed, 21 Jun 2023 22:40:16 -0400 Subject: [PATCH 20/20] add missing capability --- go.cap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.cap b/go.cap index 1a308b6451..c54c21c9f9 100644 --- a/go.cap +++ b/go.cap @@ -1,7 +1,7 @@ github.com/onflow/cadence () github.com/davecgh/go-spew/spew (file) -github.com/k0kubun/pp (file) +github.com/k0kubun/pp (file, runtime) github.com/klauspost/cpuid/v2 (file, runtime) github.com/mattn/go-colorable (file) github.com/onflow/cadence/runtime/errors (runtime)