Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Account type #2648

Merged
merged 118 commits into from
Sep 1, 2023
Merged

Account type #2648

merged 118 commits into from
Sep 1, 2023

Conversation

turbolent
Copy link
Member

@turbolent turbolent commented Jul 7, 2023

Closes #2641

Description

  • Improve code generator:
    • Add support for entitlement mappings
    • Add support for entitlement mapping entries
    • Add support for non-primitive access
    • Improve generation of nested types (avoid name clashes in generated code)
  • Checker:
    • Refactor AuthAccount and PublicAccount into Account type
    • Replace AuthAccount and PublicAccount uses with variations of &Account type
    • Replace uses of AuthAccount storage functions to Account.Storage functions
  • Interpreter, stdlib, runtime:
    • Refactor account storage functions into Account.Storage
    • Refactor AuthAccount value and related nested value implementations (e.g. AuthAccount.Capabilities) to Account
    • Remove PublicAccount value and related nested value implementations (e.g. PublicAccount.Capabilities)
    • Adjust runtime environment
    • Refactor AuthAccount constructor to Account constructor
    • Adjust conversion of addresses to account values in contract invocation
    • Refactor account-related types in cadence package
  • Types and conversion for StorageCapabilityController and AccountCapabilityController
  • Types and conversion for all entitlements
    • Mutate
    • Insert
    • Remove
    • Identity
    • Storage
    • SaveValue
    • LoadValue
    • BorrowValue
    • Contracts
    • AddContract
    • UpdateContract
    • RemoveContract
    • Keys
    • AddKey
    • RevokeKey
    • Inbox
    • PublishInboxCapability
    • UnpublishInboxCapability
    • ClaimInboxCapability
    • Capabilities
    • StorageCapabilities
    • AccountCapabilities
    • PublishCapability
    • UnpublishCapability
    • GetStorageCapabilityController
    • IssueStorageCapabilityController
    • GetAccountCapabilityController
    • IssueAccountCapabilityController
  • CCF
  • JSON
  • Test resource owner value
  • Test getAuthAccount with more entitlements

  • Targeted PR against master branch
  • Linked to Github issue with discussion and accepted design OR link to spec that describes this work
  • Code follows the standards mentioned here
  • Updated relevant documentation
  • Re-reviewed Files changed in the Github PR explorer
  • Added appropriate labels

@turbolent turbolent added Language Breaking Change Breaks Cadence contracts deployed on Mainnet Improvement Storage Breaking Change Breaks existing stored data (needs a storage migration) labels Jul 7, 2023
@turbolent turbolent self-assigned this Jul 7, 2023
Base automatically changed from bastian/remove-linking-api to feature/stable-cadence August 8, 2023 17:55
encoding/ccf/simpletype.go Show resolved Hide resolved
runtime/account_test.go Outdated Show resolved Hide resolved
runtime/convertTypes.go Show resolved Hide resolved
runtime/interpreter/statictype.go Outdated Show resolved Hide resolved
Copy link
Member

@SupunS SupunS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good so far! I checked most of the implementation code. What's remaining is the tests. Will check them in the next iteration.

runtime/interpreter/primitivestatictype.go Show resolved Hide resolved
runtime/sema/account.cdc Show resolved Hide resolved
runtime/sema/check_event_declaration.go Show resolved Hide resolved
runtime/sema/errors.go Outdated Show resolved Hide resolved
runtime/sema/gen/main.go Show resolved Hide resolved
runtime/sema/account.cdc Show resolved Hide resolved
runtime/sema/gen/main.go Outdated Show resolved Hide resolved
runtime/imported_values_memory_metering_test.go Outdated Show resolved Hide resolved
runtime/interpreter/primitivestatictype.go Show resolved Hide resolved
encoding/json/decode.go Outdated Show resolved Hide resolved
@turbolent turbolent changed the base branch from feature/stable-cadence to bastian/sync-stable-cadence-6 August 29, 2023 22:59
Base automatically changed from bastian/sync-stable-cadence-6 to feature/stable-cadence August 29, 2023 23:42
@turbolent
Copy link
Member Author

turbolent commented Aug 30, 2023

With #2751 and #2755 merged into Stable Cadence, I now reverted the removal of the composite static type ID caching changes in this PR.

Conflict resolution for the merge:
$ git log -1 -p -w --remerge-diff 28ee8ade85c6b3280efd0ce7c5e611d0fa14c95d
commit 28ee8ade85c6b3280efd0ce7c5e611d0fa14c95d
Merge: ff83742c9 3773020ec
Author: Bastian Müller <[email protected]>
Date:   Tue Aug 29 15:59:17 2023 -0700

    Merge branch 'bastian/sync-stable-cadence-6' into bastian/account-type

diff --git a/encoding/json/encoding_test.go b/encoding/json/encoding_test.go
index 3fcfcb6a7..5aa668f6d 100644
--- a/encoding/json/encoding_test.go
+++ b/encoding/json/encoding_test.go
@@ -202,7 +202,7 @@ func TestDecodeInvalidAddress(t *testing.T) {
 
 	msg := `{"type":"Address","value":"000000000102030405"}`
 
-	_, err := json.Decode(nil, []byte(msg))
+	_, err := Decode(nil, []byte(msg))
 	require.ErrorContains(t, err, "invalid address prefix: (shown as hex) expected 3078, got 3030")
 }
 
diff --git a/runtime/capabilitycontrollers_test.go b/runtime/capabilitycontrollers_test.go
index 403e05168..bf7234a1c 100644
--- a/runtime/capabilitycontrollers_test.go
+++ b/runtime/capabilitycontrollers_test.go
@@ -1910,7 +1910,7 @@ func TestRuntimeCapabilityControllers(t *testing.T) {
                   import Test from 0x1
 
                   transaction {
-                      prepare(signer: AuthAccount) {
+                      prepare(signer: auth(Storage, Capabilities) &Account) {
                           let storagePath = /storage/r
                           let resourceID = 42
 
@@ -2428,11 +2428,11 @@ func TestRuntimeCapabilityControllers(t *testing.T) {
                   import Test from 0x1
 
                   transaction {
-                      prepare(signer: AuthAccount) {
+                      prepare(signer: auth(Capabilities) &Account) {
 
 						  // Arrange
-                          let issuedCap: Capability<&AuthAccount> =
-                              signer.capabilities.account.issue<&AuthAccount>()
+                          let issuedCap: Capability<&Account> =
+                              signer.capabilities.account.issue<&Account>()
                           let controller1: &AccountCapabilityController =
                               signer.capabilities.account.getController(byCapabilityID: issuedCap.id)!
                           let controller2: &AccountCapabilityController =
@@ -2443,8 +2443,8 @@ func TestRuntimeCapabilityControllers(t *testing.T) {
                           let controller2Cap = controller2.capability
 
                           // Assert
-                          assert(controller1Cap.borrow<&AuthAccount>() != nil)
-                          assert(controller2Cap.borrow<&AuthAccount>() != nil)
+                          assert(controller1Cap.borrow<&Account>() != nil)
+                          assert(controller2Cap.borrow<&Account>() != nil)
                       }
                   }
                 `,
diff --git a/runtime/convertValues.go b/runtime/convertValues.go
index dba5c70d9..522ff25b1 100644
--- a/runtime/convertValues.go
+++ b/runtime/convertValues.go
@@ -1310,7 +1310,8 @@ func (i valueImporter) importCompositeValue(
 	inter := i.inter
 	locationRange := i.locationRange
 
-	compositeType, typeErr := inter.GetCompositeType(location, qualifiedIdentifier)
+	typeID := common.NewTypeIDFromQualifiedName(inter, location, qualifiedIdentifier)
+	compositeType, typeErr := inter.GetCompositeType(location, qualifiedIdentifier, typeID)
 	if typeErr != nil {
 		return nil, typeErr
 	}
diff --git a/runtime/convertValues_test.go b/runtime/convertValues_test.go
index a30daa203..b2bdbc851 100644
--- a/runtime/convertValues_test.go
+++ b/runtime/convertValues_test.go
@@ -1160,36 +1160,28 @@ func TestRuntimeImportRuntimeType(t *testing.T) {
 			actual: &cadence.StructType{
 				QualifiedIdentifier: "AccountKey",
 			},
-			expected: interpreter.CompositeStaticType{
-				QualifiedIdentifier: "AccountKey",
-			},
+			expected: interpreter.NewCompositeStaticTypeComputeTypeID(nil, nil, "AccountKey"),
 		},
 		{
 			label: "PublicKey",
 			actual: &cadence.StructType{
 				QualifiedIdentifier: "PublicKey",
 			},
-			expected: interpreter.CompositeStaticType{
-				QualifiedIdentifier: "PublicKey",
-			},
+			expected: interpreter.NewCompositeStaticTypeComputeTypeID(nil, nil, "PublicKey"),
 		},
 		{
 			label: "HashAlgorithm",
 			actual: &cadence.StructType{
 				QualifiedIdentifier: "HashAlgorithm",
 			},
-			expected: interpreter.CompositeStaticType{
-				QualifiedIdentifier: "HashAlgorithm",
-			},
+			expected: interpreter.NewCompositeStaticTypeComputeTypeID(nil, nil, "HashAlgorithm"),
 		},
 		{
 			label: "SignatureAlgorithm",
 			actual: &cadence.StructType{
 				QualifiedIdentifier: "SignatureAlgorithm",
 			},
-			expected: interpreter.CompositeStaticType{
-				QualifiedIdentifier: "SignatureAlgorithm",
-			},
+			expected: interpreter.NewCompositeStaticTypeComputeTypeID(nil, nil, "SignatureAlgorithm"),
 		},
 		{
 			label: "Optional",
@@ -2240,7 +2232,7 @@ func TestRuntimeExportCapabilityValue(t *testing.T) {
 		capability := interpreter.NewUnmeteredCapabilityValue(
 			3,
 			interpreter.AddressValue{0x1},
-			interpreter.NewCompositeStaticType(inter, TestLocation, "S"),
+			interpreter.NewCompositeStaticTypeComputeTypeID(inter, TestLocation, "S"),
 		)
 
 		actual, err := exportValueWithInterpreter(
diff --git a/runtime/entitlements_test.go b/runtime/entitlements_test.go
remerge CONFLICT (content): Merge conflict in runtime/entitlements_test.go
index ba4bd3732..de0b5878a 100644
--- a/runtime/entitlements_test.go
+++ b/runtime/entitlements_test.go
@@ -951,13 +951,8 @@ func TestRuntimeCapabilityEntitlements(t *testing.T) {
           resource R {}
 
           access(all)
-<<<<<<< ff83742c9 (improve naming)
           fun main() {
                let account = getAuthAccount<auth(Storage, Capabilities) &Account>(0x1)
-=======
-          fun main() {
-               let account = getAuthAccount(0x1)
->>>>>>> 3773020ec (remove TODO)
 
                let r <- create R()
                account.storage.save(<-r, to: /storage/foo)
@@ -985,19 +980,11 @@ func TestRuntimeCapabilityEntitlements(t *testing.T) {
           struct S {}
 
           access(all)
-<<<<<<< ff83742c9 (improve naming)
           fun main() {
               let account = getAuthAccount<auth(Storage, Capabilities) &Account>(0x1)
 
               let s = S()
               account.storage.save(s, to: /storage/foo)
-=======
-          fun main() {
-              let account = getAuthAccount(0x1)
-
-              let s = S()
-              account.save(s, to: /storage/foo)
->>>>>>> 3773020ec (remove TODO)
 
               let issuedCap = account.capabilities.storage.issue<auth(X) &S>(/storage/foo)
               account.capabilities.publish(issuedCap, at: /public/foo)
@@ -1022,19 +1009,11 @@ func TestRuntimeCapabilityEntitlements(t *testing.T) {
           struct S {}
 
           access(all)
-<<<<<<< ff83742c9 (improve naming)
           fun main() {
               let account = getAuthAccount<auth(Storage, Capabilities) &Account>(0x1)
 
               let s = S()
               account.storage.save(s, to: /storage/foo)
-=======
-          fun main() {
-              let account = getAuthAccount(0x1)
-
-              let s = S()
-              account.save(s, to: /storage/foo)
->>>>>>> 3773020ec (remove TODO)
 
               let issuedCap = account.capabilities.storage.issue<&S>(/storage/foo)
               account.capabilities.publish(issuedCap, at: /public/foo)
@@ -1063,19 +1042,11 @@ func TestRuntimeCapabilityEntitlements(t *testing.T) {
           resource R {}
 
           access(all)
-<<<<<<< ff83742c9 (improve naming)
           fun main() {
               let account = getAuthAccount<auth(Storage, Capabilities) &Account>(0x1)
 
               let r <- create R()
               account.storage.save(<-r, to: /storage/foo)
-=======
-          fun main() {
-              let account = getAuthAccount(0x1)
-
-              let r <- create R()
-              account.save(<-r, to: /storage/foo)
->>>>>>> 3773020ec (remove TODO)
 
               let issuedCap = account.capabilities.storage.issue<auth(X, Y) &R>(/storage/foo)
               account.capabilities.publish(issuedCap, at: /public/foo)
@@ -1100,19 +1071,11 @@ func TestRuntimeCapabilityEntitlements(t *testing.T) {
           resource R {}
 
           access(all)
-<<<<<<< ff83742c9 (improve naming)
           fun main() {
               let account = getAuthAccount<auth(Storage, Capabilities) &Account>(0x1)
 
               let r <- create R()
               account.storage.save(<-r, to: /storage/foo)
-=======
-          fun main() {
-              let account = getAuthAccount(0x1)
-
-              let r <- create R()
-              account.save(<-r, to: /storage/foo)
->>>>>>> 3773020ec (remove TODO)
 
               let issuedCap = account.capabilities.storage.issue<auth(X) &R>(/storage/foo)
               account.capabilities.publish(issuedCap, at: /public/foo)
@@ -1137,19 +1100,11 @@ func TestRuntimeCapabilityEntitlements(t *testing.T) {
           resource R {}
 
           access(all)
-<<<<<<< ff83742c9 (improve naming)
           fun main() {
               let account = getAuthAccount<auth(Storage, Capabilities) &Account>(0x1)
 
               let r <- create R()
               account.storage.save(<-r, to: /storage/foo)
-=======
-          fun main() {
-              let account = getAuthAccount(0x1)
-
-              let r <- create R()
-              account.save(<-r, to: /storage/foo)
->>>>>>> 3773020ec (remove TODO)
 
               let issuedCap = account.capabilities.storage.issue<auth(X) &R>(/storage/foo)
               account.capabilities.publish(issuedCap, at: /public/foo)
diff --git a/runtime/imported_values_memory_metering_test.go b/runtime/imported_values_memory_metering_test.go
index 69c7472dc..3418fe15f 100644
--- a/runtime/imported_values_memory_metering_test.go
+++ b/runtime/imported_values_memory_metering_test.go
@@ -396,7 +396,7 @@ func TestRuntimeImportedValueMemoryMetering(t *testing.T) {
 
 		executeScript(t, script, meter, structValue)
 		assert.Equal(t, uint64(1), meter[common.MemoryKindCompositeValueBase])
-		assert.Equal(t, uint64(284), meter[common.MemoryKindRawString])
+		assert.Equal(t, uint64(71), meter[common.MemoryKindRawString])
 	})
 }
 
diff --git a/runtime/interpreter/decode.go b/runtime/interpreter/decode.go
index cb54854c6..2fd7c66c8 100644
--- a/runtime/interpreter/decode.go
+++ b/runtime/interpreter/decode.go
@@ -1351,7 +1351,7 @@ func (d TypeDecoder) decodeCompositeStaticType() (StaticType, error) {
 		return nil, err
 	}
 
-	return NewCompositeStaticType(d.memoryGauge, location, qualifiedIdentifier), nil
+	return NewCompositeStaticTypeComputeTypeID(d.memoryGauge, location, qualifiedIdentifier), nil
 }
 
 func (d TypeDecoder) decodeInterfaceStaticType() (InterfaceStaticType, error) {
diff --git a/runtime/interpreter/encoding_test.go b/runtime/interpreter/encoding_test.go
index c6117e4bd..56650ac62 100644
--- a/runtime/interpreter/encoding_test.go
+++ b/runtime/interpreter/encoding_test.go
@@ -3458,7 +3458,7 @@ func TestEncodeDecodeTypeValue(t *testing.T) {
 		identifier := strings.Repeat("x", int(maxInlineElementSize+1))
 
 		expected := TypeValue{
-			Type: NewCompositeStaticType(
+			Type: NewCompositeStaticTypeComputeTypeID(
 				nil,
 				common.AddressLocation{},
 				identifier,
@@ -3494,7 +3494,7 @@ func TestEncodeDecodeStaticType(t *testing.T) {
 
 		t.Parallel()
 
-		ty := NewCompositeStaticType(nil, nil, "PublicKey")
+		ty := NewCompositeStaticTypeComputeTypeID(nil, nil, "PublicKey")
 
 		encoded := cbor.RawMessage{
 			// tag
@@ -3661,7 +3661,7 @@ func TestEncodeDecodeStorageCapabilityControllerValue(t *testing.T) {
 		value := &StorageCapabilityControllerValue{
 			TargetPath: publicPathValue,
 			BorrowType: ReferenceStaticType{
-				ReferencedType: NewCompositeStaticType(
+				ReferencedType: NewCompositeStaticTypeComputeTypeID(
 					nil,
 					utils.TestLocation,
 					"SimpleStruct",
diff --git a/runtime/interpreter/interpreter.go b/runtime/interpreter/interpreter.go
remerge CONFLICT (content): Merge conflict in runtime/interpreter/interpreter.go
index f542909b0..df602b038 100644
--- a/runtime/interpreter/interpreter.go
+++ b/runtime/interpreter/interpreter.go
@@ -3242,7 +3242,7 @@ func lookupInterface(interpreter *Interpreter, typeID string) (*sema.InterfaceTy
 		return nil, err
 	}
 
-	typ, err := interpreter.getInterfaceType(location, qualifiedIdentifier)
+	typ, err := interpreter.GetInterfaceType(location, qualifiedIdentifier, TypeID(typeID))
 	if err != nil {
 		return nil, err
 	}
@@ -3257,11 +3257,7 @@ func lookupComposite(interpreter *Interpreter, typeID string) (*sema.CompositeTy
 		return nil, err
 	}
 
-<<<<<<< ff83742c9 (improve naming)
-	typ, err := interpreter.GetCompositeType(location, qualifiedIdentifier)
-=======
 	typ, err := interpreter.GetCompositeType(location, qualifiedIdentifier, TypeID(typeID))
->>>>>>> 3773020ec (remove TODO)
 	if err != nil {
 		return nil, err
 	}
@@ -4481,16 +4477,11 @@ func (interpreter *Interpreter) ConvertStaticToSemaType(staticType StaticType) (
 	return ConvertStaticToSemaType(
 		config.MemoryGauge,
 		staticType,
-		func(location common.Location, qualifiedIdentifier string) (*sema.InterfaceType, error) {
-			return interpreter.getInterfaceType(location, qualifiedIdentifier)
+		func(location common.Location, qualifiedIdentifier string, typeID TypeID) (*sema.InterfaceType, error) {
+			return interpreter.GetInterfaceType(location, qualifiedIdentifier, typeID)
 		},
-<<<<<<< ff83742c9 (improve naming)
-		func(location common.Location, qualifiedIdentifier string) (*sema.CompositeType, error) {
-			return interpreter.GetCompositeType(location, qualifiedIdentifier)
-=======
 		func(location common.Location, qualifiedIdentifier string, typeID TypeID) (*sema.CompositeType, error) {
 			return interpreter.GetCompositeType(location, qualifiedIdentifier, typeID)
->>>>>>> 3773020ec (remove TODO)
 		},
 		interpreter.getEntitlement,
 		interpreter.getEntitlementMapType,
@@ -4562,27 +4553,15 @@ func (interpreter *Interpreter) GetContractComposite(contractLocation common.Add
 func (interpreter *Interpreter) GetCompositeType(
 	location common.Location,
 	qualifiedIdentifier string,
-<<<<<<< ff83742c9 (improve naming)
-=======
 	typeID TypeID,
->>>>>>> 3773020ec (remove TODO)
 ) (*sema.CompositeType, error) {
 	var compositeType *sema.CompositeType
-	var typeID common.TypeID
 	if location == nil {
 		compositeType = sema.NativeCompositeTypes[qualifiedIdentifier]
 		if compositeType != nil {
 			return compositeType, nil
 		}
-		typeID = common.TypeID(qualifiedIdentifier)
 	} else {
-<<<<<<< ff83742c9 (improve naming)
-		typeID = location.TypeID(interpreter, qualifiedIdentifier)
-
-		compositeType = interpreter.getUserCompositeType(location, typeID)
-		if compositeType != nil {
-			return compositeType, nil
-=======
 		config := interpreter.SharedState.Config
 		compositeTypeHandler := config.CompositeTypeHandler
 		if compositeTypeHandler != nil {
@@ -4590,7 +4569,6 @@ func (interpreter *Interpreter) GetCompositeType(
 			if compositeType != nil {
 				return compositeType, nil
 			}
->>>>>>> 3773020ec (remove TODO)
 		}
 
 		compositeType = interpreter.getUserCompositeType(location, typeID)
@@ -4613,13 +4591,15 @@ func (interpreter *Interpreter) getUserCompositeType(location common.Location, t
 	return elaboration.CompositeType(typeID)
 }
 
-func (interpreter *Interpreter) getInterfaceType(location common.Location, qualifiedIdentifier string) (*sema.InterfaceType, error) {
+func (interpreter *Interpreter) GetInterfaceType(
+	location common.Location,
+	qualifiedIdentifier string,
+	typeID TypeID,
+) (*sema.InterfaceType, error) {
 	if location == nil {
 		return nil, InterfaceMissingLocationError{QualifiedIdentifier: qualifiedIdentifier}
 	}
 
-	typeID := location.TypeID(interpreter, qualifiedIdentifier)
-
 	elaboration := interpreter.getElaboration(location)
 	if elaboration == nil {
 		return nil, TypeLoadingError{
diff --git a/runtime/interpreter/interpreter_transaction.go b/runtime/interpreter/interpreter_transaction.go
index 7c9d472b6..ece979924 100644
--- a/runtime/interpreter/interpreter_transaction.go
+++ b/runtime/interpreter/interpreter_transaction.go
@@ -52,7 +52,7 @@ func (interpreter *Interpreter) declareTransactionEntryPoint(declaration *ast.Tr
 		interpreter.Program.Elaboration.PostConditionsRewrite(declaration.PostConditions)
 
 	const qualifiedIdentifier = ""
-	staticType := NewCompositeStaticType(interpreter, interpreter.Location, qualifiedIdentifier)
+	staticType := NewCompositeStaticTypeComputeTypeID(interpreter, interpreter.Location, qualifiedIdentifier)
 
 	self := NewSimpleCompositeValue(
 		interpreter,
diff --git a/runtime/interpreter/primitivestatictype.go b/runtime/interpreter/primitivestatictype.go
remerge CONFLICT (content): Merge conflict in runtime/interpreter/primitivestatictype.go
index 37e0310e5..7063c7d03 100644
--- a/runtime/interpreter/primitivestatictype.go
+++ b/runtime/interpreter/primitivestatictype.go
@@ -395,8 +395,6 @@ func (t PrimitiveStaticType) elementSize() uint {
 	panic(errors.NewUnexpectedError("missing case for %s", t))
 }
 
-<<<<<<< ff83742c9 (improve naming)
-=======
 func (t PrimitiveStaticType) Equal(other StaticType) bool {
 	otherPrimitiveType, ok := other.(PrimitiveStaticType)
 	if !ok {
@@ -423,7 +421,6 @@ func (t PrimitiveStaticType) ID() TypeID {
 	return t.SemaType().ID()
 }
 
->>>>>>> 3773020ec (remove TODO)
 func (t PrimitiveStaticType) SemaType() sema.Type {
 	switch t {
 	case PrimitiveStaticTypeVoid:
@@ -559,7 +556,6 @@ func (t PrimitiveStaticType) SemaType() sema.Type {
 		return sema.StorageCapabilityControllerType
 	case PrimitiveStaticTypeAccountCapabilityController:
 		return sema.AccountCapabilityControllerType
-<<<<<<< ff83742c9 (improve naming)
 
 	case PrimitiveStaticTypeAuthAccount,
 		PrimitiveStaticTypePublicAccount,
@@ -655,18 +651,6 @@ func (t PrimitiveStaticType) SemaType() sema.Type {
 		return sema.CapabilitiesMappingType
 	case PrimitiveStaticTypeAccountMapping:
 		return sema.AccountMappingType
-=======
-	case PrimitiveStaticTypeAuthAccountStorageCapabilities:
-		return sema.AuthAccountStorageCapabilitiesType
-	case PrimitiveStaticTypeAuthAccountAccountCapabilities:
-		return sema.AuthAccountAccountCapabilitiesType
-	case PrimitiveStaticTypeAuthAccountCapabilities:
-		return sema.AuthAccountCapabilitiesType
-	case PrimitiveStaticTypePublicAccountCapabilities:
-		return sema.PublicAccountCapabilitiesType
-	default:
-		panic(errors.NewUnexpectedError("missing case for %s", t))
->>>>>>> 3773020ec (remove TODO)
 	}
 
 	panic(errors.NewUnexpectedError("missing case for %s", t))
diff --git a/runtime/interpreter/statictype.go b/runtime/interpreter/statictype.go
remerge CONFLICT (content): Merge conflict in runtime/interpreter/statictype.go
index 77bf175eb..49e5f012b 100644
--- a/runtime/interpreter/statictype.go
+++ b/runtime/interpreter/statictype.go
@@ -58,10 +58,7 @@ type TypeID = common.TypeID
 type CompositeStaticType struct {
 	Location            common.Location
 	QualifiedIdentifier string
-<<<<<<< ff83742c9 (improve naming)
-=======
 	TypeID              TypeID
->>>>>>> 3773020ec (remove TODO)
 }
 
 var _ StaticType = CompositeStaticType{}
@@ -70,10 +67,7 @@ func NewCompositeStaticType(
 	memoryGauge common.MemoryGauge,
 	location common.Location,
 	qualifiedIdentifier string,
-<<<<<<< ff83742c9 (improve naming)
-=======
 	typeID TypeID,
->>>>>>> 3773020ec (remove TODO)
 ) CompositeStaticType {
 	common.UseMemory(memoryGauge, common.CompositeStaticTypeMemoryUsage)
 
@@ -84,11 +78,10 @@ func NewCompositeStaticType(
 	return CompositeStaticType{
 		Location:            location,
 		QualifiedIdentifier: qualifiedIdentifier,
+		TypeID:              typeID,
 	}
 }
 
-<<<<<<< ff83742c9 (improve naming)
-=======
 func NewCompositeStaticTypeComputeTypeID(
 	memoryGauge common.MemoryGauge,
 	location common.Location,
@@ -108,7 +101,6 @@ func NewCompositeStaticTypeComputeTypeID(
 	)
 }
 
->>>>>>> 3773020ec (remove TODO)
 func (CompositeStaticType) isStaticType() {}
 
 func (CompositeStaticType) elementSize() uint {
@@ -119,14 +111,19 @@ func (t CompositeStaticType) String() string {
 	if t.Location == nil {
 		return t.QualifiedIdentifier
 	}
-	return string(t.Location.TypeID(nil, t.QualifiedIdentifier))
+	return string(t.TypeID)
 }
 
 func (t CompositeStaticType) MeteredString(memoryGauge common.MemoryGauge) string {
+	var amount int
 	if t.Location == nil {
-		return t.QualifiedIdentifier
+		amount = len(t.QualifiedIdentifier)
+	} else {
+		amount = len(t.TypeID)
 	}
-	return string(t.Location.TypeID(memoryGauge, t.QualifiedIdentifier))
+
+	common.UseMemory(memoryGauge, common.NewRawStringMemoryUsage(amount))
+	return t.String()
 }
 
 func (t CompositeStaticType) Equal(other StaticType) bool {
@@ -135,8 +132,7 @@ func (t CompositeStaticType) Equal(other StaticType) bool {
 		return false
 	}
 
-	return otherCompositeType.Location == t.Location &&
-		otherCompositeType.QualifiedIdentifier == t.QualifiedIdentifier
+	return otherCompositeType.TypeID == t.TypeID
 }
 
 func (t CompositeStaticType) ID() TypeID {
@@ -1020,13 +1016,6 @@ func ConvertSemaInterfaceTypeToStaticInterfaceType(
 	)
 }
 
-func ConvertSemaCompositeTypeToStaticCompositeType(
-	memoryGauge common.MemoryGauge,
-	t *sema.CompositeType,
-) CompositeStaticType {
-	return NewCompositeStaticType(memoryGauge, t.Location, t.QualifiedIdentifier())
-}
-
 func ConvertStaticAuthorizationToSemaAccess(
 	memoryGauge common.MemoryGauge,
 	auth Authorization,
@@ -1065,23 +1054,17 @@ func ConvertStaticAuthorizationToSemaAccess(
 func ConvertStaticToSemaType(
 	memoryGauge common.MemoryGauge,
 	typ StaticType,
-	getInterface func(location common.Location, qualifiedIdentifier string) (*sema.InterfaceType, error),
-<<<<<<< ff83742c9 (improve naming)
-	getComposite func(location common.Location, qualifiedIdentifier string) (*sema.CompositeType, error),
-	getEntitlement func(typeID common.TypeID) (*sema.EntitlementType, error),
-	getEntitlementMapType func(typeID common.TypeID) (*sema.EntitlementMapType, error),
-=======
+	getInterface func(location common.Location, qualifiedIdentifier string, typeID TypeID) (*sema.InterfaceType, error),
 	getComposite func(location common.Location, qualifiedIdentifier string, typeID TypeID) (*sema.CompositeType, error),
 	getEntitlement func(typeID TypeID) (*sema.EntitlementType, error),
 	getEntitlementMapType func(typeID TypeID) (*sema.EntitlementMapType, error),
->>>>>>> 3773020ec (remove TODO)
 ) (_ sema.Type, err error) {
 	switch t := typ.(type) {
 	case CompositeStaticType:
-		return getComposite(t.Location, t.QualifiedIdentifier)
+		return getComposite(t.Location, t.QualifiedIdentifier, t.TypeID)
 
 	case InterfaceStaticType:
-		return getInterface(t.Location, t.QualifiedIdentifier)
+		return getInterface(t.Location, t.QualifiedIdentifier, t.TypeID)
 
 	case VariableSizedStaticType:
 		ty, err := ConvertStaticToSemaType(
@@ -1169,7 +1152,7 @@ func ConvertStaticToSemaType(
 			intersectedTypes = make([]*sema.InterfaceType, typeCount)
 
 			for i, typ := range t.Types {
-				intersectedTypes[i], err = getInterface(typ.Location, typ.QualifiedIdentifier)
+				intersectedTypes[i], err = getInterface(typ.Location, typ.QualifiedIdentifier, typ.TypeID)
 				if err != nil {
 					return nil, err
 				}
diff --git a/runtime/interpreter/statictype_test.go b/runtime/interpreter/statictype_test.go
remerge CONFLICT (content): Merge conflict in runtime/interpreter/statictype_test.go
index 92c2f17df..2bbbc41e7 100644
--- a/runtime/interpreter/statictype_test.go
+++ b/runtime/interpreter/statictype_test.go
@@ -179,12 +179,12 @@ func TestCompositeStaticType_Equal(t *testing.T) {
 		t.Parallel()
 
 		require.True(t,
-			NewCompositeStaticType(
+			NewCompositeStaticTypeComputeTypeID(
 				nil,
 				utils.TestLocation,
 				"X",
 			).Equal(
-				NewCompositeStaticType(
+				NewCompositeStaticTypeComputeTypeID(
 					nil,
 					utils.TestLocation,
 					"X",
@@ -198,12 +198,12 @@ func TestCompositeStaticType_Equal(t *testing.T) {
 		t.Parallel()
 
 		require.False(t,
-			NewCompositeStaticType(
+			NewCompositeStaticTypeComputeTypeID(
 				nil,
 				utils.TestLocation,
 				"X",
 			).Equal(
-				NewCompositeStaticType(
+				NewCompositeStaticTypeComputeTypeID(
 					nil,
 					utils.TestLocation,
 					"Y",
@@ -217,12 +217,12 @@ func TestCompositeStaticType_Equal(t *testing.T) {
 		t.Parallel()
 
 		require.False(t,
-			NewCompositeStaticType(
+			NewCompositeStaticTypeComputeTypeID(
 				nil,
 				common.IdentifierLocation("A"),
 				"X",
 			).Equal(
-				NewCompositeStaticType(
+				NewCompositeStaticTypeComputeTypeID(
 					nil,
 					common.IdentifierLocation("B"),
 					"X",
@@ -236,12 +236,12 @@ func TestCompositeStaticType_Equal(t *testing.T) {
 		t.Parallel()
 
 		require.False(t,
-			NewCompositeStaticType(
+			NewCompositeStaticTypeComputeTypeID(
 				nil,
 				common.IdentifierLocation("A"),
 				"X",
 			).Equal(
-				NewCompositeStaticType(
+				NewCompositeStaticTypeComputeTypeID(
 					nil,
 					common.StringLocation("A"),
 					"X",
@@ -255,12 +255,12 @@ func TestCompositeStaticType_Equal(t *testing.T) {
 		t.Parallel()
 
 		require.True(t,
-			NewCompositeStaticType(
+			NewCompositeStaticTypeComputeTypeID(
 				nil,
 				nil,
 				"X",
 			).Equal(
-				NewCompositeStaticType(
+				NewCompositeStaticTypeComputeTypeID(
 					nil,
 					nil,
 					"X",
@@ -274,12 +274,12 @@ func TestCompositeStaticType_Equal(t *testing.T) {
 		t.Parallel()
 
 		require.False(t,
-			NewCompositeStaticType(
+			NewCompositeStaticTypeComputeTypeID(
 				nil,
 				nil,
 				"X",
 			).Equal(
-				NewCompositeStaticType(
+				NewCompositeStaticTypeComputeTypeID(
 					nil,
 					nil,
 					"Y",
@@ -293,12 +293,12 @@ func TestCompositeStaticType_Equal(t *testing.T) {
 		t.Parallel()
 
 		require.False(t,
-			NewCompositeStaticType(
+			NewCompositeStaticTypeComputeTypeID(
 				nil,
 				nil,
 				"X",
 			).Equal(
-				NewCompositeStaticType(
+				NewCompositeStaticTypeComputeTypeID(
 					nil,
 					common.StringLocation("B"),
 					"X",
@@ -312,7 +312,7 @@ func TestCompositeStaticType_Equal(t *testing.T) {
 		t.Parallel()
 
 		require.False(t,
-			NewCompositeStaticType(
+			NewCompositeStaticTypeComputeTypeID(
 				nil,
 				nil,
 				"X",
@@ -402,21 +402,8 @@ func TestInterfaceStaticType_Equal(t *testing.T) {
 		t.Parallel()
 
 		require.False(t,
-<<<<<<< ff83742c9 (improve naming)
-			InterfaceStaticType{
-				Location:            nil,
-				QualifiedIdentifier: "X",
-			}.Equal(
-				NewCompositeStaticType(
-					nil,
-					nil,
-					"X",
-				),
-			),
-=======
 			NewInterfaceStaticTypeComputeTypeID(nil, nil, "X").
 				Equal(NewCompositeStaticTypeComputeTypeID(nil, nil, "X")),
->>>>>>> 3773020ec (remove TODO)
 		)
 	})
 }
@@ -922,18 +909,11 @@ func TestStaticTypeConversion(t *testing.T) {
 		Identifier: testCompositeQualifiedIdentifier,
 	}
 
-<<<<<<< ff83742c9 (improve naming)
-	testCompositeStaticType := CompositeStaticType{
-		Location:            testLocation,
-		QualifiedIdentifier: testCompositeQualifiedIdentifier,
-	}
-=======
 	testCompositeStaticType := NewCompositeStaticTypeComputeTypeID(
 		nil,
 		testLocation,
 		testCompositeQualifiedIdentifier,
 	)
->>>>>>> 3773020ec (remove TODO)
 
 	testFunctionType := &sema.FunctionType{}
 
@@ -945,6 +925,7 @@ func TestStaticTypeConversion(t *testing.T) {
 			t *testing.T,
 			location common.Location,
 			qualifiedIdentifier string,
+			typeID TypeID,
 		) (
 			*sema.InterfaceType,
 			error,
@@ -953,10 +934,7 @@ func TestStaticTypeConversion(t *testing.T) {
 			t *testing.T,
 			location common.Location,
 			qualifiedIdentifier string,
-<<<<<<< ff83742c9 (improve naming)
-=======
 			typeID TypeID,
->>>>>>> 3773020ec (remove TODO)
 		) (
 			*sema.CompositeType,
 			error,
@@ -1273,6 +1251,7 @@ func TestStaticTypeConversion(t *testing.T) {
 				t *testing.T,
 				location common.Location,
 				qualifiedIdentifier string,
+				_ TypeID,
 			) (*sema.CompositeType, error) {
 				require.Nil(t, location)
 				require.Equal(t, "AccountKey", qualifiedIdentifier)
@@ -1512,6 +1491,7 @@ func TestStaticTypeConversion(t *testing.T) {
 				t *testing.T,
 				location common.Location,
 				qualifiedIdentifier string,
+				typeID TypeID,
 			) (*sema.InterfaceType, error) {
 				require.Equal(t, testLocation, location)
 				require.Equal(t, testInterfaceQualifiedIdentifier, qualifiedIdentifier)
@@ -1526,6 +1506,7 @@ func TestStaticTypeConversion(t *testing.T) {
 				t *testing.T,
 				location common.Location,
 				qualifiedIdentifier string,
+				typeID TypeID,
 			) (*sema.InterfaceType, error) {
 				require.Equal(t, testLocation, location)
 				require.Equal(t, testInterfaceQualifiedIdentifier, qualifiedIdentifier)
@@ -1536,15 +1517,12 @@ func TestStaticTypeConversion(t *testing.T) {
 			name:       "Composite",
 			semaType:   testCompositeSemaType,
 			staticType: testCompositeStaticType,
-<<<<<<< ff83742c9 (improve naming)
 			getComposite: func(
 				t *testing.T,
 				location common.Location,
 				qualifiedIdentifier string,
+				typeID TypeID,
 			) (*sema.CompositeType, error) {
-=======
-			getComposite: func(location common.Location, qualifiedIdentifier string, typeID TypeID) (*sema.CompositeType, error) {
->>>>>>> 3773020ec (remove TODO)
 				require.Equal(t, testLocation, location)
 				require.Equal(t, testCompositeQualifiedIdentifier, qualifiedIdentifier)
 				return testCompositeSemaType, nil
@@ -1644,6 +1622,7 @@ func TestStaticTypeConversion(t *testing.T) {
 					_ *testing.T,
 					_ common.Location,
 					_ string,
+					_ TypeID,
 				) (*sema.InterfaceType, error) {
 					require.FailNow(t, "getInterface should not be called")
 					return nil, nil
@@ -1652,15 +1631,12 @@ func TestStaticTypeConversion(t *testing.T) {
 
 			getComposite := test.getComposite
 			if getComposite == nil {
-<<<<<<< ff83742c9 (improve naming)
 				getComposite = func(
 					_ *testing.T,
 					_ common.Location,
 					_ string,
+					_ TypeID,
 				) (*sema.CompositeType, error) {
-=======
-				getComposite = func(_ common.Location, _ string, _ TypeID) (*sema.CompositeType, error) {
->>>>>>> 3773020ec (remove TODO)
 					require.FailNow(t, "getComposite should not be called")
 					return nil, nil
 				}
@@ -1679,11 +1655,11 @@ func TestStaticTypeConversion(t *testing.T) {
 			convertedSemaType, err := ConvertStaticToSemaType(
 				nil,
 				test.staticType,
-				func(location common.Location, qualifiedIdentifier string) (*sema.InterfaceType, error) {
-					return getInterface(t, location, qualifiedIdentifier)
+				func(location common.Location, qualifiedIdentifier string, typeID TypeID) (*sema.InterfaceType, error) {
+					return getInterface(t, location, qualifiedIdentifier, typeID)
 				},
-				func(location common.Location, qualifiedIdentifier string) (*sema.CompositeType, error) {
-					return getComposite(t, location, qualifiedIdentifier)
+				func(location common.Location, qualifiedIdentifier string, typeID TypeID) (*sema.CompositeType, error) {
+					return getComposite(t, location, qualifiedIdentifier, typeID)
 				},
 				getEntitlement,
 				getEntitlementMap,
diff --git a/runtime/interpreter/value.go b/runtime/interpreter/value.go
index 917f3614e..1ec1c1e54 100644
--- a/runtime/interpreter/value.go
+++ b/runtime/interpreter/value.go
@@ -16394,6 +16394,7 @@ func (v *CompositeValue) StaticType(interpreter *Interpreter) StaticType {
 			interpreter,
 			v.Location,
 			v.QualifiedIdentifier,
+			v.TypeID(),
 		)
 	}
 	return v.staticType
diff --git a/runtime/interpreter/value_accountcapabilitycontroller.go b/runtime/interpreter/value_accountcapabilitycontroller.go
remerge CONFLICT (content): Merge conflict in runtime/interpreter/value_accountcapabilitycontroller.go
index 07304c218..d43a78e23 100644
--- a/runtime/interpreter/value_accountcapabilitycontroller.go
+++ b/runtime/interpreter/value_accountcapabilitycontroller.go
@@ -246,10 +246,6 @@ func (*AccountCapabilityControllerValue) RemoveMember(_ *Interpreter, _ Location
 	panic(errors.NewUnreachableError())
 }
 
-<<<<<<< ff83742c9 (improve naming)
-func (v *AccountCapabilityControllerValue) SetMember(_ *Interpreter, _ LocationRange, _ string, _ Value) bool {
-	// Account capability controllers have no settable members (fields / functions)
-=======
 func (v *AccountCapabilityControllerValue) SetMember(
 	_ *Interpreter,
 	_ LocationRange,
@@ -267,7 +263,6 @@ func (v *AccountCapabilityControllerValue) SetMember(
 		return true
 	}
 
->>>>>>> 3773020ec (remove TODO)
 	panic(errors.NewUnreachableError())
 }
 
diff --git a/runtime/interpreter/value_accountkey.go b/runtime/interpreter/value_accountkey.go
index 46ca5dfd9..05013dbbf 100644
--- a/runtime/interpreter/value_accountkey.go
+++ b/runtime/interpreter/value_accountkey.go
@@ -23,7 +23,7 @@ import (
 )
 
 var accountKeyTypeID = sema.AccountKeyType.ID()
-var AccountKeyStaticType StaticType = NewCompositeStaticType(nil, nil, "AccountKey") // unmetered
+var AccountKeyStaticType StaticType = ConvertSemaCompositeTypeToStaticCompositeType(nil, sema.AccountKeyType)
 var accountKeyFieldNames = []string{
 	sema.AccountKeyKeyIndexFieldName,
 	sema.AccountKeyPublicKeyFieldName,
diff --git a/runtime/interpreter/value_deployedcontract.go b/runtime/interpreter/value_deployedcontract.go
index fd9d364c1..745c9fc3b 100644
--- a/runtime/interpreter/value_deployedcontract.go
+++ b/runtime/interpreter/value_deployedcontract.go
@@ -71,7 +71,8 @@ func newPublicTypesFunctionValue(inter *Interpreter, addressValue AddressValue,
 				contractLocation := common.NewAddressLocation(innerInter, address, name.Str)
 				// we're only looking at the contract as a whole, so no need to construct a nested path
 				qualifiedIdent := name.Str
-				compositeType, err := innerInter.GetCompositeType(contractLocation, qualifiedIdent)
+				typeID := common.NewTypeIDFromQualifiedName(innerInter, contractLocation, qualifiedIdent)
+				compositeType, err := innerInter.GetCompositeType(contractLocation, qualifiedIdent, typeID)
 				if err != nil {
 					panic(err)
 				}
diff --git a/runtime/runtime_memory_metering_test.go b/runtime/runtime_memory_metering_test.go
index 9dcd1c93f..9ec4886c7 100644
--- a/runtime/runtime_memory_metering_test.go
+++ b/runtime/runtime_memory_metering_test.go
@@ -97,7 +97,7 @@ func TestRuntimeInterpreterAddressLocationMetering(t *testing.T) {
 
 		assert.Equal(t, uint64(1), meter.getMemory(common.MemoryKindAddressLocation))
 		assert.Equal(t, uint64(2), meter.getMemory(common.MemoryKindElaboration))
-		assert.Equal(t, uint64(21), meter.getMemory(common.MemoryKindRawString))
+		assert.Equal(t, uint64(0), meter.getMemory(common.MemoryKindRawString))
 		assert.Equal(t, uint64(1), meter.getMemory(common.MemoryKindCadenceVoidValue))
 	})
 }
diff --git a/runtime/sema/access.go b/runtime/sema/access.go
remerge CONFLICT (content): Merge conflict in runtime/sema/access.go
index 75b760a23..6f0e60c85 100644
--- a/runtime/sema/access.go
+++ b/runtime/sema/access.go
@@ -334,7 +334,7 @@ func (e *EntitlementMapAccess) entitlementImage(entitlement *EntitlementType) *E
 		}
 	}
 	if e.Type.IncludesIdentity {
-		output.Set(entitlement, struct{}{})
+		imageMap.Set(entitlement, struct{}{})
 	}
 
 	e.images.Store(entitlement, imageMap)
@@ -346,13 +346,6 @@ func (e *EntitlementMapAccess) entitlementImage(entitlement *EntitlementType) *E
 // arguments.
 func (e *EntitlementMapAccess) Image(inputs Access, astRange func() ast.Range) (Access, error) {
 
-<<<<<<< ff83742c9 (improve naming)
-	if e.Type == IdentityType {
-		return inputs, nil
-	}
-
-=======
->>>>>>> 3773020ec (remove TODO)
 	switch inputs := inputs.(type) {
 	// primitive access always passes trivially through the map
 	case PrimitiveAccess:
diff --git a/runtime/sema/account_capability_controller.gen.go b/runtime/sema/account_capability_controller.gen.go
remerge CONFLICT (content): Merge conflict in runtime/sema/account_capability_controller.gen.go
index 0cc149225..c91e435e1 100644
--- a/runtime/sema/account_capability_controller.gen.go
+++ b/runtime/sema/account_capability_controller.gen.go
@@ -117,10 +117,7 @@ func init() {
 		return MembersAsResolvers([]*Member{
 			NewUnmeteredFieldMember(
 				t,
-<<<<<<< ff83742c9 (improve naming)
 				PrimitiveAccess(ast.AccessAll),
-=======
-				ast.AccessAll,
 				ast.VariableKindConstant,
 				AccountCapabilityControllerTypeCapabilityFieldName,
 				AccountCapabilityControllerTypeCapabilityFieldType,
@@ -128,8 +125,7 @@ func init() {
 			),
 			NewUnmeteredFieldMember(
 				t,
-				ast.AccessAll,
->>>>>>> 3773020ec (remove TODO)
+				PrimitiveAccess(ast.AccessAll),
 				ast.VariableKindVariable,
 				AccountCapabilityControllerTypeTagFieldName,
 				AccountCapabilityControllerTypeTagFieldType,
diff --git a/runtime/sema/gen/main.go b/runtime/sema/gen/main.go
index bb88ea987..e2c223ce4 100644
--- a/runtime/sema/gen/main.go
+++ b/runtime/sema/gen/main.go
@@ -593,7 +593,7 @@ func (g *generator) VisitEntitlementMappingDeclaration(decl *ast.EntitlementMapp
 
 	entitlementMappingName := decl.Identifier.Identifier
 	typeVarName := typeVarName(entitlementMappingName)
-	typeVarDecl := entitlementMapTypeLiteral(entitlementMappingName, decl.Associations)
+	typeVarDecl := entitlementMapTypeLiteral(entitlementMappingName, decl.Elements)
 
 	g.addDecls(
 		goVarDecl(
@@ -1721,7 +1721,7 @@ func entitlementTypeLiteral(name string) dst.Expr {
 	}
 }
 
-func entitlementMapTypeLiteral(name string, associations []*ast.EntitlementMapElement) dst.Expr {
+func entitlementMapTypeLiteral(name string, elements []ast.EntitlementMapElement) dst.Expr {
 	// &sema.EntitlementMapType{
 	//	Identifier: "Foo",
 	//	Relations: []EntitlementRelation{
@@ -1732,14 +1732,20 @@ func entitlementMapTypeLiteral(name string, associations []*ast.EntitlementMapEl
 	//	}
 	// }
 
-	relationExprs := make([]dst.Expr, 0, len(associations))
+	relationExprs := make([]dst.Expr, 0, len(elements))
+
+	for _, element := range elements {
+
+		relation, ok := element.(*ast.EntitlementMapRelation)
+		if !ok {
+			panic(fmt.Errorf("non-relation map element is not supported: %s", element))
+		}
 
-	for _, association := range associations {
 		relationExpr := &dst.CompositeLit{
 			Type: dst.NewIdent("EntitlementRelation"),
 			Elts: []dst.Expr{
-				goKeyValue("Input", typeExpr(association.Input, nil)),
-				goKeyValue("Output", typeExpr(association.Output, nil)),
+				goKeyValue("Input", typeExpr(relation.Input, nil)),
+				goKeyValue("Output", typeExpr(relation.Output, nil)),
 			},
 		}
 
diff --git a/runtime/sema/storage_capability_controller.gen.go b/runtime/sema/storage_capability_controller.gen.go
remerge CONFLICT (content): Merge conflict in runtime/sema/storage_capability_controller.gen.go
index 558dfece6..c74ed0974 100644
--- a/runtime/sema/storage_capability_controller.gen.go
+++ b/runtime/sema/storage_capability_controller.gen.go
@@ -149,10 +149,7 @@ func init() {
 		return MembersAsResolvers([]*Member{
 			NewUnmeteredFieldMember(
 				t,
-<<<<<<< ff83742c9 (improve naming)
 				PrimitiveAccess(ast.AccessAll),
-=======
-				ast.AccessAll,
 				ast.VariableKindConstant,
 				StorageCapabilityControllerTypeCapabilityFieldName,
 				StorageCapabilityControllerTypeCapabilityFieldType,
@@ -160,8 +157,7 @@ func init() {
 			),
 			NewUnmeteredFieldMember(
 				t,
-				ast.AccessAll,
->>>>>>> 3773020ec (remove TODO)
+				PrimitiveAccess(ast.AccessAll),
 				ast.VariableKindVariable,
 				StorageCapabilityControllerTypeTagFieldName,
 				StorageCapabilityControllerTypeTagFieldType,
diff --git a/runtime/sema/type.go b/runtime/sema/type.go
remerge CONFLICT (content): Merge conflict in runtime/sema/type.go
index 6bdf4ac71..a507a9d26 100644
--- a/runtime/sema/type.go
+++ b/runtime/sema/type.go
@@ -3752,21 +3752,18 @@ func addToBaseActivation(ty Type) {
 	)
 }
 
-<<<<<<< ff83742c9 (improve naming)
-var IdentityType = NewEntitlementMapType(nil, nil, "Identity")
-=======
 const IdentityMappingIdentifier string = "Identity"
 
-// The `Identity` mapping is an empty map that includes the Identity map,
+// IdentityType represents the `Identity` entitlement mapping type.
+// It is an empty map that includes the Identity map,
 // and is considered already "resolved" with regards to its (vacuously empty) inclusions.
 // defining it this way eliminates the need to do any special casing for its behavior
-var IdentityMappingType = func() *EntitlementMapType {
+var IdentityType = func() *EntitlementMapType {
 	m := NewEntitlementMapType(nil, nil, IdentityMappingIdentifier)
 	m.IncludesIdentity = true
 	m.resolveInclusions.Do(func() {})
 	return m
 }()
->>>>>>> 3773020ec (remove TODO)
 
 func baseTypeVariable(name string, ty Type) *Variable {
 	return &Variable{
diff --git a/runtime/stdlib/bls.go b/runtime/stdlib/bls.go
remerge CONFLICT (content): Merge conflict in runtime/stdlib/bls.go
index 91cfd7f52..f99591db2 100644
--- a/runtime/stdlib/bls.go
+++ b/runtime/stdlib/bls.go
@@ -48,14 +48,10 @@ var blsContractType = func() *sema.CompositeType {
 	return ty
 }()
 
-<<<<<<< ff83742c9 (improve naming)
-var blsContractStaticType interpreter.StaticType = interpreter.NewCompositeStaticType(nil, nil, blsContractType.Identifier)
-=======
 var blsContractStaticType interpreter.StaticType = interpreter.ConvertSemaCompositeTypeToStaticCompositeType(
 	nil,
 	blsContractType,
 )
->>>>>>> 3773020ec (remove TODO)
 
 const blsAggregateSignaturesFunctionDocString = `
 Aggregates multiple BLS signatures into one,
diff --git a/runtime/stdlib/contracts/test.cdc b/runtime/stdlib/contracts/test.cdc
remerge CONFLICT (content): Merge conflict in runtime/stdlib/contracts/test.cdc
index 7a0548702..f9a022518 100644
--- a/runtime/stdlib/contracts/test.cdc
+++ b/runtime/stdlib/contracts/test.cdc
@@ -27,12 +27,8 @@ contract Test {
         /// The transaction is paid by the service account.
         /// The returned account can be used to sign and authorize transactions.
         ///
-<<<<<<< ff83742c9 (improve naming)
-        access(all) fun createAccount(): TestAccount {
-=======
         access(all)
-        fun createAccount(): Account {
->>>>>>> 3773020ec (remove TODO)
+        fun createAccount(): TestAccount {
             return self.backend.createAccount()
         }
 
@@ -122,12 +118,8 @@ contract Test {
         /// Returns the service account of the blockchain. Can be used to sign
         /// transactions with this account.
         ///
-<<<<<<< ff83742c9 (improve naming)
-        access(all) fun serviceAccount(): TestAccount {
-=======
         access(all)
-        fun serviceAccount(): Account {
->>>>>>> 3773020ec (remove TODO)
+        fun serviceAccount(): TestAccount {
             return self.backend.serviceAccount()
         }
 
@@ -205,7 +197,7 @@ contract Test {
 
     /// Result is the interface to be implemented by the various execution
     /// operations, such as transactions and scripts.
-    ///\
+    ///
     access(all)
     struct interface Result {
         /// The result status of an executed operation.
@@ -270,20 +262,14 @@ contract Test {
 
     /// TestAccount represents info about the account created on the blockchain.
     ///
-<<<<<<< ff83742c9 (improve naming)
-    access(all) struct TestAccount {
-        access(all) let address: Address
-        access(all) let publicKey: PublicKey
-=======
     access(all)
-    struct Account {
+    struct TestAccount {
 
         access(all)
         let address: Address
 
         access(all)
         let publicKey: PublicKey
->>>>>>> 3773020ec (remove TODO)
 
         init(address: Address, publicKey: PublicKey) {
             self.address = address
@@ -307,13 +293,6 @@ contract Test {
 
     /// Transaction that can be submitted and executed on the blockchain.
     ///
-<<<<<<< ff83742c9 (improve naming)
-    access(all) struct Transaction {
-        access(all) let code: String
-        access(all) let authorizers: [Address]
-        access(all) let signers: [TestAccount]
-        access(all) let arguments: [AnyStruct]
-=======
     access(all)
     struct Transaction {
 
@@ -324,13 +303,11 @@ contract Test {
         let authorizers: [Address]
 
         access(all)
-        let signers: [Account]
+        let signers: [TestAccount]
 
         access(all)
         let arguments: [AnyStruct]
 
->>>>>>> 3773020ec (remove TODO)
-
         init(code: String, authorizers: [Address], signers: [TestAccount], arguments: [AnyStruct]) {
             self.code = code
             self.authorizers = authorizers
@@ -354,12 +331,8 @@ contract Test {
         /// The transaction is paid by the service account.
         /// The returned account can be used to sign and authorize transactions.
         ///
-<<<<<<< ff83742c9 (improve naming)
-        access(all) fun createAccount(): TestAccount
-=======
         access(all)
-        fun createAccount(): Account
->>>>>>> 3773020ec (remove TODO)
+        fun createAccount(): TestAccount
 
         /// Add a transaction to the current block.
         ///
@@ -402,12 +375,8 @@ contract Test {
         /// Returns the service account of the blockchain. Can be used to sign
         /// transactions with this account.
         ///
-<<<<<<< ff83742c9 (improve naming)
-        access(all) fun serviceAccount(): TestAccount
-=======
         access(all)
-        fun serviceAccount(): Account
->>>>>>> 3773020ec (remove TODO)
+        fun serviceAccount(): TestAccount
 
         /// Returns all events emitted from the blockchain, optionally filtered
         /// by type.
diff --git a/runtime/stdlib/hashalgorithm.go b/runtime/stdlib/hashalgorithm.go
remerge CONFLICT (content): Merge conflict in runtime/stdlib/hashalgorithm.go
index 1fdf79834..65019f84e 100644
--- a/runtime/stdlib/hashalgorithm.go
+++ b/runtime/stdlib/hashalgorithm.go
@@ -25,14 +25,10 @@ import (
 	"github.com/onflow/cadence/runtime/sema"
 )
 
-<<<<<<< ff83742c9 (improve naming)
-var hashAlgorithmStaticType interpreter.StaticType = interpreter.NewCompositeStaticType(nil, nil, sema.HashAlgorithmTypeName)
-=======
 var hashAlgorithmStaticType interpreter.StaticType = interpreter.ConvertSemaCompositeTypeToStaticCompositeType(
 	nil,
 	sema.HashAlgorithmType,
 )
->>>>>>> 3773020ec (remove TODO)
 
 type Hasher interface {
 	// Hash returns the digest of hashing the given data with using the given hash algorithm
diff --git a/runtime/stdlib/rlp.go b/runtime/stdlib/rlp.go
remerge CONFLICT (content): Merge conflict in runtime/stdlib/rlp.go
index 9f6f15581..4743450d2 100644
--- a/runtime/stdlib/rlp.go
+++ b/runtime/stdlib/rlp.go
@@ -51,14 +51,10 @@ var rlpContractType = func() *sema.CompositeType {
 	return ty
 }()
 
-<<<<<<< ff83742c9 (improve naming)
-var rlpContractStaticType interpreter.StaticType = interpreter.NewCompositeStaticType(nil, nil, rlpContractType.Identifier)
-=======
 var rlpContractStaticType interpreter.StaticType = interpreter.ConvertSemaCompositeTypeToStaticCompositeType(
 	nil,
 	rlpContractType,
 )
->>>>>>> 3773020ec (remove TODO)
 
 const rlpErrMsgInputContainsExtraBytes = "input data is expected to be RLP-encoded of a single string or a single list but it seems it contains extra trailing bytes."
 
diff --git a/runtime/stdlib/signaturealgorithm.go b/runtime/stdlib/signaturealgorithm.go
remerge CONFLICT (content): Merge conflict in runtime/stdlib/signaturealgorithm.go
index 85aa8eb1d..fa475433c 100644
--- a/runtime/stdlib/signaturealgorithm.go
+++ b/runtime/stdlib/signaturealgorithm.go
@@ -24,14 +24,10 @@ import (
 	"github.com/onflow/cadence/runtime/sema"
 )
 
-<<<<<<< ff83742c9 (improve naming)
-var signatureAlgorithmStaticType interpreter.StaticType = interpreter.NewCompositeStaticType(nil, nil, sema.SignatureAlgorithmTypeName)
-=======
 var signatureAlgorithmStaticType interpreter.StaticType = interpreter.ConvertSemaCompositeTypeToStaticCompositeType(
 	nil,
 	sema.SignatureAlgorithmType,
 )
->>>>>>> 3773020ec (remove TODO)
 
 func NewSignatureAlgorithmCase(rawValue interpreter.UInt8Value) interpreter.MemberAccessibleValue {
 
diff --git a/runtime/tests/interpreter/account_test.go b/runtime/tests/interpreter/account_test.go
remerge CONFLICT (content): Merge conflict in runtime/tests/interpreter/account_test.go
index c3ea2775a..e0f83103b 100644
--- a/runtime/tests/interpreter/account_test.go
+++ b/runtime/tests/interpreter/account_test.go
@@ -613,14 +613,7 @@ func TestInterpretAccountStorageType(t *testing.T) {
 		require.Equal(t,
 			interpreter.NewUnmeteredSomeValueNonCopying(
 				interpreter.TypeValue{
-<<<<<<< ff83742c9 (improve naming)
-					Type: interpreter.CompositeStaticType{
-						Location:            TestLocation,
-						QualifiedIdentifier: "R",
-					},
-=======
 					Type: interpreter.NewCompositeStaticTypeComputeTypeID(nil, TestLocation, "R"),
->>>>>>> 3773020ec (remove TODO)
 				},
 			),
 			value,
@@ -639,14 +632,7 @@ func TestInterpretAccountStorageType(t *testing.T) {
 		require.Equal(t,
 			interpreter.NewUnmeteredSomeValueNonCopying(
 				interpreter.TypeValue{
-<<<<<<< ff83742c9 (improve naming)
-					Type: interpreter.CompositeStaticType{
-						Location:            TestLocation,
-						QualifiedIdentifier: "S",
-					},
-=======
 					Type: interpreter.NewCompositeStaticTypeComputeTypeID(nil, TestLocation, "S"),
->>>>>>> 3773020ec (remove TODO)
 				},
 			),
 			value,
diff --git a/runtime/tests/interpreter/composite_value_test.go b/runtime/tests/interpreter/composite_value_test.go
index 470fc0958..97c824fd4 100644
--- a/runtime/tests/interpreter/composite_value_test.go
+++ b/runtime/tests/interpreter/composite_value_test.go
@@ -96,7 +96,7 @@ func testCompositeValue(t *testing.T, code string) *interpreter.Interpreter {
 		"This is the color",
 	))
 
-	fruitStaticType := interpreter.NewCompositeStaticType(
+	fruitStaticType := interpreter.NewCompositeStaticTypeComputeTypeID(
 		nil,
 		TestLocation,
 		fruitType.Identifier,
diff --git a/runtime/tests/interpreter/memory_metering_test.go b/runtime/tests/interpreter/memory_metering_test.go
remerge CONFLICT (content): Merge conflict in runtime/tests/interpreter/memory_metering_test.go
index bf878862c..3bb817901 100644
--- a/runtime/tests/interpreter/memory_metering_test.go
+++ b/runtime/tests/interpreter/memory_metering_test.go
@@ -644,7 +644,7 @@ func TestInterpretCompositeMetering(t *testing.T) {
 		require.NoError(t, err)
 
 		assert.Equal(t, uint64(6), meter.getMemory(common.MemoryKindStringValue))
-		assert.Equal(t, uint64(102), meter.getMemory(common.MemoryKindRawString))
+		assert.Equal(t, uint64(66), meter.getMemory(common.MemoryKindRawString))
 		assert.Equal(t, uint64(4), meter.getMemory(common.MemoryKindCompositeValueBase))
 		assert.Equal(t, uint64(5), meter.getMemory(common.MemoryKindAtreeMapDataSlab))
 		assert.Equal(t, uint64(1), meter.getMemory(common.MemoryKindAtreeMapMetaDataSlab))
@@ -739,7 +739,7 @@ func TestInterpretCompositeFieldMetering(t *testing.T) {
 		_, err := inter.Invoke("main")
 		require.NoError(t, err)
 
-		assert.Equal(t, uint64(9), meter.getMemory(common.MemoryKindRawString))
+		assert.Equal(t, uint64(0), meter.getMemory(common.MemoryKindRawString))
 		assert.Equal(t, uint64(2), meter.getMemory(common.MemoryKindCompositeValueBase))
 		assert.Equal(t, uint64(2), meter.getMemory(common.MemoryKindAtreeMapDataSlab))
 		assert.Equal(t, uint64(0), meter.getMemory(common.MemoryKindAtreeMapMetaDataSlab))
@@ -767,7 +767,7 @@ func TestInterpretCompositeFieldMetering(t *testing.T) {
 		_, err := inter.Invoke("main")
 		require.NoError(t, err)
 
-		assert.Equal(t, uint64(34), meter.getMemory(common.MemoryKindRawString))
+		assert.Equal(t, uint64(16), meter.getMemory(common.MemoryKindRawString))
 		assert.Equal(t, uint64(2), meter.getMemory(common.MemoryKindCompositeValueBase))
 		assert.Equal(t, uint64(1), meter.getMemory(common.MemoryKindAtreeMapElementOverhead))
 		assert.Equal(t, uint64(2), meter.getMemory(common.MemoryKindAtreeMapDataSlab))
@@ -798,7 +798,7 @@ func TestInterpretCompositeFieldMetering(t *testing.T) {
 		_, err := inter.Invoke("main")
 		require.NoError(t, err)
 
-		assert.Equal(t, uint64(61), meter.getMemory(common.MemoryKindRawString))
+		assert.Equal(t, uint64(34), meter.getMemory(common.MemoryKindRawString))
 		assert.Equal(t, uint64(2), meter.getMemory(common.MemoryKindAtreeMapDataSlab))
 		assert.Equal(t, uint64(2), meter.getMemory(common.MemoryKindAtreeMapElementOverhead))
 		assert.Equal(t, uint64(0), meter.getMemory(common.MemoryKindAtreeMapMetaDataSlab))
@@ -7826,7 +7826,7 @@ func TestInterpreterStringLocationMetering(t *testing.T) {
 		testLocationStringCount := meter.getMemory(common.MemoryKindRawString)
 
 		// raw string location is "test" + locationIDs
-		assert.Equal(t, uint64(14), testLocationStringCount-emptyLocationStringCount)
+		assert.Equal(t, uint64(5), testLocationStringCount-emptyLocationStringCount)
 
 		assert.Equal(t, uint64(1), meter.getMemory(common.MemoryKindCompositeStaticType))
 
@@ -8952,14 +8952,7 @@ func TestInterpretValueStringConversion(t *testing.T) {
 			interpreter.NewUnmeteredCapabilityValue(
 				4,
 				interpreter.AddressValue{1},
-<<<<<<< ff83742c9 (improve naming)
-				interpreter.CompositeStaticType{
-					Location:            utils.TestLocation,
-					QualifiedIdentifier: "Bar",
-				},
-=======
 				interpreter.NewCompositeStaticTypeComputeTypeID(nil, utils.TestLocation, "Bar"),
->>>>>>> 3773020ec (remove TODO)
 			))
 	})
 
diff --git a/runtime/tests/interpreter/metatype_test.go b/runtime/tests/interpreter/metatype_test.go
index 19b86fac6..90994ccfd 100644
--- a/runtime/tests/interpreter/metatype_test.go
+++ b/runtime/tests/interpreter/metatype_test.go
@@ -640,7 +640,7 @@ func TestInterpretGetType(t *testing.T) {
               }
             `,
 			result: interpreter.TypeValue{
-				Type: interpreter.NewCompositeStaticType(nil, TestLocation, "R"),
+				Type: interpreter.NewCompositeStaticTypeComputeTypeID(nil, TestLocation, "R"),
 			},
 		},
 		{
diff --git a/runtime/tests/interpreter/runtimetype_test.go b/runtime/tests/interpreter/runtimetype_test.go
remerge CONFLICT (content): Merge conflict in runtime/tests/interpreter/runtimetype_test.go
index 8d9e896ac..a1e140864 100644
--- a/runtime/tests/interpreter/runtimetype_test.go
+++ b/runtime/tests/interpreter/runtimetype_test.go
@@ -65,14 +65,7 @@ func TestInterpretOptionalType(t *testing.T) {
 	assert.Equal(t,
 		interpreter.TypeValue{
 			Type: interpreter.OptionalStaticType{
-<<<<<<< ff83742c9 (improve naming)
-				Type: interpreter.CompositeStaticType{
-					Location:            utils.TestLocation,
-					QualifiedIdentifier: "R",
-				},
-=======
 				Type: interpreter.NewCompositeStaticTypeComputeTypeID(nil, utils.TestLocation, "R"),
->>>>>>> 3773020ec (remove TODO)
 			},
 		},
 		inter.Globals.Get("c").GetValue(),
@@ -131,14 +124,7 @@ func TestInterpretVariableSizedArrayType(t *testing.T) {
 	assert.Equal(t,
 		interpreter.TypeValue{
 			Type: interpreter.VariableSizedStaticType{
-<<<<<<< ff83742c9 (improve naming)
-				Type: interpreter.CompositeStaticType{
-					Location:            utils.TestLocation,
-					QualifiedIdentifier: "R",
-				},
-=======
 				Type: interpreter.NewCompositeStaticTypeComputeTypeID(nil, utils.TestLocation, "R"),
->>>>>>> 3773020ec (remove TODO)
 			},
 		},
 		inter.Globals.Get("c").GetValue(),
@@ -198,14 +184,7 @@ func TestInterpretConstantSizedArrayType(t *testing.T) {
 	assert.Equal(t,
 		interpreter.TypeValue{
 			Type: interpreter.ConstantSizedStaticType{
-<<<<<<< ff83742c9 (improve naming)
-				Type: interpreter.CompositeStaticType{
-					Location:            utils.TestLocation,
-					QualifiedIdentifier: "R",
-				},
-=======
 				Type: interpreter.NewCompositeStaticTypeComputeTypeID(nil, utils.TestLocation, "R"),
->>>>>>> 3773020ec (remove TODO)
 				Size: int64(400),
 			},
 		},
@@ -271,16 +250,8 @@ func TestInterpretDictionaryType(t *testing.T) {
 	assert.Equal(t,
 		interpreter.TypeValue{
 			Type: interpreter.DictionaryStaticType{
-<<<<<<< ff83742c9 (improve naming)
-				ValueType: interpreter.CompositeStaticType{
-					Location:            utils.TestLocation,
-					QualifiedIdentifier: "R",
-				},
-				KeyType: interpreter.PrimitiveStaticTypeInt,
-=======
 				ValueType: interpreter.NewCompositeStaticTypeComputeTypeID(nil, utils.TestLocation, "R"),
 				KeyType:   interpreter.PrimitiveStaticTypeInt,
->>>>>>> 3773020ec (remove TODO)
 			},
 		},
 		inter.Globals.Get("c").GetValue(),
@@ -334,28 +305,14 @@ func TestInterpretCompositeType(t *testing.T) {
 
 	assert.Equal(t,
 		interpreter.TypeValue{
-<<<<<<< ff83742c9 (improve naming)
-			Type: interpreter.CompositeStaticType{
-				QualifiedIdentifier: "R",
-				Location:            utils.TestLocation,
-			},
-=======
 			Type: interpreter.NewCompositeStaticTypeComputeTypeID(nil, utils.TestLocation, "R"),
->>>>>>> 3773020ec (remove TODO)
 		},
 		inter.Globals.Get("a").GetValue(),
 	)
 
 	assert.Equal(t,
 		interpreter.TypeValue{
-<<<<<<< ff83742c9 (improve naming)
-			Type: interpreter.CompositeStaticType{
-				QualifiedIdentifier: "S",
-				Location:            utils.TestLocation,
-			},
-=======
 			Type: interpreter.NewCompositeStaticTypeComputeTypeID(nil, utils.TestLocation, "S"),
->>>>>>> 3773020ec (remove TODO)
 		},
 		inter.Globals.Get("b").GetValue(),
 	)
@@ -377,42 +334,21 @@ func TestInterpretCompositeType(t *testing.T) {
 
 	assert.Equal(t,
 		interpreter.TypeValue{
-<<<<<<< ff83742c9 (improve naming)
-			Type: interpreter.CompositeStaticType{
-				QualifiedIdentifier: "F",
-				Location:            utils.TestLocation,
-			},
-=======
 			Type: interpreter.NewCompositeStaticTypeComputeTypeID(nil, utils.TestLocation, "F"),
->>>>>>> 3773020ec (remove TODO)
 		},
 		inter.Globals.Get("f").GetValue(),
 	)
 
 	assert.Equal(t,
 		interpreter.TypeValue{
-<<<<<<< ff83742c9 (improve naming)
-			Type: interpreter.CompositeStaticType{
-				Location:            nil,
-				QualifiedIdentifier: "PublicKey",
-			},
-=======
 			Type: interpreter.NewCompositeStaticTypeComputeTypeID(nil, nil, "PublicKey"),
->>>>>>> 3773020ec (remove TODO)
 		},
 		inter.Globals.Get("g").GetValue(),
 	)
 
 	assert.Equal(t,
 		interpreter.TypeValue{
-<<<<<<< ff83742c9 (improve naming)
-			Type: interpreter.CompositeStaticType{
-				Location:            nil,
-				QualifiedIdentifier: "HashAlgorithm",
-			},
-=======
 			Type: interpreter.NewCompositeStaticTypeComputeTypeID(nil, nil, "HashAlgorithm"),
->>>>>>> 3773020ec (remove TODO)
 		},
 		inter.Globals.Get("h").GetValue(),
 	)
@@ -537,14 +473,7 @@ func TestInterpretReferenceType(t *testing.T) {
 	assert.Equal(t,
 		interpreter.TypeValue{
 			Type: interpreter.ReferenceStaticType{
-<<<<<<< ff83742c9 (improve naming)
-				ReferencedType: interpreter.CompositeStaticType{
-					QualifiedIdentifier: "R",
-					Location:            utils.TestLocation,
-				},
-=======
 				ReferencedType: interpreter.NewCompositeStaticTypeComputeTypeID(nil, utils.TestLocation, "R"),
->>>>>>> 3773020ec (remove TODO)
 				Authorization: interpreter.NewEntitlementSetAuthorization(
 					nil,
 					func() []common.TypeID { return []common.TypeID{"S.test.X"} },
@@ -569,14 +498,7 @@ func TestInterpretReferenceType(t *testing.T) {
 	assert.Equal(t,
 		interpreter.TypeValue{
 			Type: interpreter.ReferenceStaticType{
-<<<<<<< ff83742c9 (improve naming)
-				ReferencedType: interpreter.CompositeStaticType{
-					QualifiedIdentifier: "S",
-					Location:            utils.TestLocation,
-				},
-=======
 				ReferencedType: interpreter.NewCompositeStaticTypeComputeTypeID(nil, utils.TestLocation, "S"),
->>>>>>> 3773020ec (remove TODO)
 				Authorization: interpreter.NewEntitlementSetAuthorization(
 					nil,
 					func() []common.TypeID { return []common.TypeID{"S.test.X"} },
@@ -730,16 +652,8 @@ func TestInterpretCapabilityType(t *testing.T) {
 		interpreter.TypeValue{
 			Type: interpreter.CapabilityStaticType{
 				BorrowType: interpreter.ReferenceStaticType{
-<<<<<<< ff83742c9 (improve naming)
-					ReferencedType: interpreter.CompositeStaticType{
-						QualifiedIdentifier: "R",
-						Location:            utils.TestLocation,
-					},
-					Authorization: interpreter.UnauthorizedAccess,
-=======
 					ReferencedType: interpreter.NewCompositeStaticTypeComputeTypeID(nil, utils.TestLocation, "R"),
 					Authorization:  interpreter.UnauthorizedAccess,
->>>>>>> 3773020ec (remove TODO)
 				},
 			},
 		},
diff --git a/types.go b/types.go
remerge CONFLICT (content): Merge conflict in types.go
index 8a026653c..e0608208b 100644
--- a/types.go
+++ b/types.go
@@ -853,11 +853,7 @@ func NewMeteredAttachmentType(
 	fields []Field,
 	initializers [][]Parameter,
 ) *AttachmentType {
-<<<<<<< ff83742c9 (improve naming)
 	common.UseMemory(gauge, common.CadenceAttachmentTypeMemoryUsage)
-=======
-	common.UseMemory(gauge, common.CadenceStructTypeMemoryUsage)
->>>>>>> 3773020ec (remove TODO)
 	return NewAttachmentType(
 		location,
 		baseType,
@@ -1802,167 +1798,6 @@ func (t *EnumType) Equal(other Type) bool {
 		t.QualifiedIdentifier == otherType.QualifiedIdentifier
 }
 
-<<<<<<< ff83742c9 (improve naming)
-func generateTypeID(location common.Location, identifier string) string {
-	if location == nil {
-		return identifier
-	}
-
-	return string(location.TypeID(nil, identifier))
-=======
-// AuthAccountType
-type AuthAccountType struct{}
-
-var TheAuthAccountType = AuthAccountType{}
-
-func NewAuthAccountType() AuthAccountType {
-	return TheAuthAccountType
-}
-
-func (AuthAccountType) isType() {}
-
-func (AuthAccountType) ID() string {
-	return "AuthAccount"
-}
-
-func (t AuthAccountType) Equal(other Type) bool {
-	return t == other
-}
-
-// PublicAccountType
-type PublicAccountType struct{}
-
-var ThePublicAccountType = PublicAccountType{}
-
-func NewPublicAccountType() PublicAccountType {
-	return ThePublicAccountType
-}
-
-func (PublicAccountType) isType() {}
-
-func (PublicAccountType) ID() string {
-	return "PublicAccount"
-}
-
-func (t PublicAccountType) Equal(other Type) bool {
-	return t == other
-}
-
-// DeployedContractType
-type DeployedContractType struct{}
-
-var TheDeployedContractType = DeployedContractType{}
-
-func NewDeployedContractType() DeployedContractType {
-	return TheDeployedContractType
-}
-
-func (DeployedContractType) isType() {}
-
-func (DeployedContractType) ID() string {
-	return "DeployedContract"
-}
-
-func (t DeployedContractType) Equal(other Type) bool {
-	return t == other
-}
-
-// AuthAccountContractsType
-type AuthAccountContractsType struct{}
-
-var TheAuthAccountContractsType = AuthAccountContractsType{}
-
-func NewAuthAccountContractsType() AuthAccountContractsType {
-	return TheAuthAccountContractsType
-}
-
-func (AuthAccountContractsType) isType() {}
-
-func (AuthAccountContractsType) ID() string {
-	return "AuthAccount.Contracts"
-}
-
-func (t AuthAccountContractsType) Equal(other Type) bool {
-	return t == other
-}
-
-// PublicAccountContractsType
-type PublicAccountContractsType struct{}
-
-var ThePublicAccountContractsType = PublicAccountContractsType{}
-
-func NewPublicAccountContractsType() PublicAccountContractsType {
-	return ThePublicAccountContractsType
-}
-
-func (PublicAccountContractsType) isType() {}
-
-func (PublicAccountContractsType) ID() string {
-	return "PublicAccount.Contracts"
-}
-
-func (t PublicAccountContractsType) Equal(other Type) bool {
-	return t == other
-}
-
-// AuthAccountKeysType
-type AuthAccountKeysType struct{}
-
-var TheAuthAccountKeysType = AuthAccountKeysType{}
-
-func NewAuthAccountKeysType() AuthAccountKeysType {
-	return TheAuthAccountKeysType
-}
-
-func (AuthAccountKeysType) isType() {}
-
-func (AuthAccountKeysType) ID() string {
-	return "AuthAccount.Keys"
-}
-
-func (t AuthAccountKeysType) Equal(other Type) bool {
-	return t == other
-}
-
-// PublicAccountKeysType
-type PublicAccountKeysType struct{}
-
-var ThePublicAccountKeysType = PublicAccountKeysType{}
-
-func NewPublicAccountKeysType() PublicAccountKeysType {
-	return ThePublicAccountKeysType
-}
-
-func (PublicAccountKeysType) isType() {}
-
-func (PublicAccountKeysType) ID() string {
-	return "PublicAccount.Keys"
-}
-
-func (t PublicAccountKeysType) Equal(other Type) bool {
-	return t == other
-}
-
-// AccountKeyType
-type AccountKeyType struct{}
-
-var TheAccountKeyType = AccountKeyType{}
-
-func NewAccountKeyType() AccountKeyType {
-	return TheAccountKeyType
-}
-
-func (AccountKeyType) isType() {}
-
-func (AccountKeyType) ID() string {
-	return "AccountKey"
-}
-
-func (t AccountKeyType) Equal(other Type) bool {
-	return t == other
->>>>>>> 3773020ec (remove TODO)
-}
-
 // TypeWithCachedTypeID recursively caches type ID of type t.
 // This is needed because each type ID is lazily cached on
 // its first use in ID() to avoid performance penalty.

@turbolent
Copy link
Member Author

turbolent commented Aug 30, 2023

@SupunS @dsainati1 Could you please have another look? (see comment above)

Copy link
Contributor

@dsainati1 dsainati1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🙏

Copy link
Member

@SupunS SupunS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉

@turbolent turbolent merged commit 978dc9d into feature/stable-cadence Sep 1, 2023
9 of 11 checks passed
@turbolent turbolent deleted the bastian/account-type branch September 1, 2023 17:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Go API Breaking Change Breaks programs which use the Cadence repo as a Go dependency Improvement Language Breaking Change Breaks Cadence contracts deployed on Mainnet Storage Breaking Change Breaks existing stored data (needs a storage migration)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants