sema

package
v0.34.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 16, 2023 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NumberTypeName           = "Number"
	SignedNumberTypeName     = "SignedNumber"
	IntegerTypeName          = "Integer"
	SignedIntegerTypeName    = "SignedInteger"
	FixedPointTypeName       = "FixedPoint"
	SignedFixedPointTypeName = "SignedFixedPoint"

	IntTypeName    = "Int"
	Int8TypeName   = "Int8"
	Int16TypeName  = "Int16"
	Int32TypeName  = "Int32"
	Int64TypeName  = "Int64"
	Int128TypeName = "Int128"
	Int256TypeName = "Int256"

	UIntTypeName    = "UInt"
	UInt8TypeName   = "UInt8"
	UInt16TypeName  = "UInt16"
	UInt32TypeName  = "UInt32"
	UInt64TypeName  = "UInt64"
	UInt128TypeName = "UInt128"
	UInt256TypeName = "UInt256"

	Word8TypeName  = "Word8"
	Word16TypeName = "Word16"
	Word32TypeName = "Word32"
	Word64TypeName = "Word64"

	Fix64TypeName  = "Fix64"
	UFix64TypeName = "UFix64"
)
View Source
const AccountContractsTypeBorrowFunctionName = "borrow"
View Source
const AccountContractsTypeGetFunctionName = "get"
View Source
const AccountContractsTypeNamesFieldName = "names"
View Source
const AccountKeyHashAlgoFieldName = "hashAlgorithm"
View Source
const AccountKeyIsRevokedFieldName = "isRevoked"
View Source
const AccountKeyKeyIndexFieldName = "keyIndex"
View Source
const AccountKeyPublicKeyFieldName = "publicKey"
View Source
const AccountKeyTypeName = "AccountKey"
View Source
const AccountKeyWeightFieldName = "weight"
View Source
const AccountKeysTypeAddFunctionName = "add"
View Source
const AccountKeysTypeCountFieldName = "count"
View Source
const AccountKeysTypeForEachFunctionName = "forEach"
View Source
const AccountKeysTypeGetFunctionName = "get"
View Source
const AccountKeysTypeName = "Keys"
View Source
const AccountKeysTypeRevokeFunctionName = "revoke"
View Source
const AddressTypeName = "Address"
View Source
const AddressTypeToBytesFunctionName = `toBytes`
View Source
const ArgumentLabelNotRequired = "_"
View Source
const AuthAccountContractsTypeAddFunctionName = "add"
View Source
const AuthAccountContractsTypeName = "Contracts"
View Source
const AuthAccountContractsTypeRemoveFunctionName = "remove"
View Source
const AuthAccountContractsTypeUpdateExperimentalFunctionName = "update__experimental"
View Source
const AuthAccountTypeAddPublicKeyFunctionName = "addPublicKey"
View Source
const AuthAccountTypeAddressFieldName = "address"
View Source
const AuthAccountTypeAvailableBalanceFieldName = "availableBalance"
View Source
const AuthAccountTypeBalanceFieldName = "balance"
View Source
const AuthAccountTypeBorrowFunctionName = "borrow"
View Source
const AuthAccountTypeContractsFieldName = "contracts"
View Source
const AuthAccountTypeCopyFunctionName = "copy"
View Source
const AuthAccountTypeForEachPrivateFunctionName = "forEachPrivate"
View Source
const AuthAccountTypeForEachPublicFunctionName = "forEachPublic"
View Source
const AuthAccountTypeForEachStoredFunctionName = "forEachStored"
View Source
const AuthAccountTypeGetCapabilityFunctionName = "getCapability"
View Source
const AuthAccountTypeGetLinkTargetFunctionName = "getLinkTarget"
View Source
const AuthAccountTypeInboxClaimFunctionName = "claim"
View Source
const AuthAccountTypeInboxFieldName = "inbox"
View Source
const AuthAccountTypeInboxPublishFunctionName = "publish"
View Source
const AuthAccountTypeInboxUnpublishFunctionName = "unpublish"
View Source
const AuthAccountTypeKeysFieldName = "keys"
View Source
const AuthAccountTypeLinkAccountFunctionName = "linkAccount"
View Source
const AuthAccountTypeLinkFunctionName = "link"
View Source
const AuthAccountTypeLoadFunctionName = "load"
View Source
const AuthAccountTypeName = "AuthAccount"
View Source
const AuthAccountTypePrivatePathsFieldName = "privatePaths"
View Source
const AuthAccountTypePublicPathsFieldName = "publicPaths"
View Source
const AuthAccountTypeRemovePublicKeyFunctionName = "removePublicKey"
View Source
const AuthAccountTypeSaveFunctionName = "save"
View Source
const AuthAccountTypeStorageCapacityFieldName = "storageCapacity"
View Source
const AuthAccountTypeStoragePathsFieldName = "storagePaths"
View Source
const AuthAccountTypeStorageUsedFieldName = "storageUsed"
View Source
const AuthAccountTypeTypeFunctionName = "type"
View Source
const AuthAccountTypeUnlinkFunctionName = "unlink"
View Source
const BeforeIdentifier = "before"
View Source
const BlockTypeHeightFieldDocString = `` /* 184-byte string literal not displayed */
View Source
const BlockTypeHeightFieldName = "height"
View Source
const BlockTypeIdFieldDocString = `
The ID of the block.
It is essentially the hash of the block
`
View Source
const BlockTypeIdFieldName = "id"
View Source
const BlockTypeName = "Block"
View Source
const BlockTypeTimestampFieldDocString = `
Consider observing blocks' status changes off-chain yourself to get a more reliable value.
`
View Source
const BlockTypeTimestampFieldName = "timestamp"
View Source
const BlockTypeViewFieldDocString = `` /* 275-byte string literal not displayed */
View Source
const BlockTypeViewFieldName = "view"
View Source
const CapabilityTypeAddressFieldName = "address"
View Source
const CapabilityTypeBorrowFunctionName = "borrow"
View Source
const CapabilityTypeCheckFunctionName = "check"
View Source
const ContractAccountFieldName = "account"
View Source
const DeployedContractTypeAddressFieldName = "address"
View Source
const DeployedContractTypeCodeFieldName = "code"
View Source
const DeployedContractTypeNameFieldName = "name"
View Source
const DeployedContractTypePublicTypesFunctionDocString = `
Returns an array of Type objects representing all public type declarations in this contract.
`
View Source
const DeployedContractTypePublicTypesFunctionName = "publicTypes"
View Source
const EnumRawValueFieldName = "rawValue"
View Source
const Fix64Factor = fixedpoint.Fix64Factor
View Source
const Fix64Scale = fixedpoint.Fix64Scale
View Source
const Fix64TypeMaxFractional = fixedpoint.Fix64TypeMaxFractional
View Source
const Fix64TypeMaxInt = fixedpoint.Fix64TypeMaxInt
View Source
const Fix64TypeMinFractional = fixedpoint.Fix64TypeMinFractional
View Source
const Fix64TypeMinInt = fixedpoint.Fix64TypeMinInt
View Source
const FromStringFunctionName = "fromString"

fromString

View Source
const FunctionEntryPointName = "main"
View Source
const GetTypeFunctionName = "getType"
View Source
const HashAlgorithmDocStringKECCAK_256 = `` /* 187-byte string literal not displayed */
View Source
const HashAlgorithmDocStringKMAC128_BLS_BLS12_381 = `` /* 546-byte string literal not displayed */
View Source
const HashAlgorithmDocStringSHA2_256 = `
SHA2_256 is SHA-2 with a 256-bit digest (also referred to as SHA256)
`
View Source
const HashAlgorithmDocStringSHA2_384 = `
SHA2_384 is SHA-2 with a 384-bit digest (also referred to as  SHA384)
`
View Source
const HashAlgorithmDocStringSHA3_256 = `
SHA3_256 is SHA-3 with a 256-bit digest
`
View Source
const HashAlgorithmDocStringSHA3_384 = `
SHA3_384 is SHA-3 with a 384-bit digest
`
View Source
const HashAlgorithmTypeHashFunctionDocString = `
Returns the hash of the given data
`
View Source
const HashAlgorithmTypeHashFunctionName = "hash"
View Source
const HashAlgorithmTypeHashWithTagFunctionDocString = `
Returns the hash of the given data and tag
`
View Source
const HashAlgorithmTypeHashWithTagFunctionName = "hashWithTag"
View Source
const HashAlgorithmTypeName = "HashAlgorithm"
View Source
const IsInstanceFunctionName = "isInstance"
View Source
const MetaTypeName = "Type"
View Source
const NumberTypeMaxFieldName = "max"
View Source
const NumberTypeMinFieldName = "min"
View Source
const NumericTypeSaturatingAddFunctionName = "saturatingAdd"
View Source
const NumericTypeSaturatingDivideFunctionName = "saturatingDivide"
View Source
const NumericTypeSaturatingMultiplyFunctionName = "saturatingMultiply"
View Source
const NumericTypeSaturatingSubtractFunctionName = "saturatingSubtract"
View Source
const OptionalTypeMapFunctionName = "map"
View Source
const PublicAccountContractsTypeName = "Contracts"
View Source
const PublicAccountTypeAddressFieldName = "address"
View Source
const PublicAccountTypeAvailableBalanceFieldName = "availableBalance"
View Source
const PublicAccountTypeBalanceFieldName = "balance"
View Source
const PublicAccountTypeContractsFieldName = "contracts"
View Source
const PublicAccountTypeForEachPublicFieldName = "forEachPublic"
View Source
const PublicAccountTypeGetCapabilityFieldName = "getCapability"
View Source
const PublicAccountTypeGetTargetLinkFieldName = "getLinkTarget"
View Source
const PublicAccountTypeKeysFieldName = "keys"
View Source
const PublicAccountTypeName = "PublicAccount"
View Source
const PublicAccountTypePathsFieldName = "publicPaths"
View Source
const PublicAccountTypeStorageCapacityFieldName = "storageCapacity"
View Source
const PublicAccountTypeStorageUsedFieldName = "storageUsed"
View Source
const PublicKeyTypeName = "PublicKey"
View Source
const PublicKeyTypePublicKeyFieldName = "publicKey"
View Source
const PublicKeyTypeSignAlgoFieldName = "signatureAlgorithm"
View Source
const PublicKeyTypeVerifyFunctionName = "verify"
View Source
const PublicKeyTypeVerifyPoPFunctionName = "verifyPoP"
View Source
const ResourceOwnerFieldName = "owner"
View Source
const ResourceUUIDFieldName = "uuid"
View Source
const ResultIdentifier = "result"
View Source
const SelfIdentifier = "self"
View Source
const SignatureAlgorithmDocStringBLS_BLS12_381 = `` /* 244-byte string literal not displayed */
View Source
const SignatureAlgorithmDocStringECDSA_P256 = `
ECDSA_P256 is ECDSA on the NIST P-256 curve
`
View Source
const SignatureAlgorithmDocStringECDSA_secp256k1 = `
ECDSA_secp256k1 is ECDSA on the secp256k1 curve
`
View Source
const SignatureAlgorithmTypeName = "SignatureAlgorithm"
View Source
const StringTypeEncodeHexFunctionDocString = `
Returns a hexadecimal string for the given byte array
`
View Source
const StringTypeEncodeHexFunctionName = "encodeHex"
View Source
const StringTypeFromCharactersFunctionDocString = `
Returns a string from the given array of characters
`
View Source
const StringTypeFromCharactersFunctionName = "fromCharacters"
View Source
const StringTypeFromUtf8FunctionDocString = `
Attempt to decode the input as a UTF-8 encoded string. Returns nil if the input bytes are malformed UTF-8
`
View Source
const StringTypeFromUtf8FunctionName = "fromUTF8"
View Source
const ToBigEndianBytesFunctionName = "toBigEndianBytes"
View Source
const ToStringFunctionName = "toString"
View Source
const UFix64TypeMaxFractional = fixedpoint.UFix64TypeMaxFractional
View Source
const UFix64TypeMaxInt = fixedpoint.UFix64TypeMaxInt
View Source
const UFix64TypeMinFractional = fixedpoint.UFix64TypeMinFractional
View Source
const UFix64TypeMinInt = fixedpoint.UFix64TypeMinInt

Variables

View Source
var (

	// NumberType represents the super-type of all number types
	NumberType = NewNumericType(NumberTypeName).
				WithTag(NumberTypeTag).
				AsSuperType()

	// SignedNumberType represents the super-type of all signed number types
	SignedNumberType = NewNumericType(SignedNumberTypeName).
						WithTag(SignedNumberTypeTag).
						AsSuperType()

	// IntegerType represents the super-type of all integer types
	IntegerType = NewNumericType(IntegerTypeName).
				WithTag(IntegerTypeTag).
				AsSuperType()

	// SignedIntegerType represents the super-type of all signed integer types
	SignedIntegerType = NewNumericType(SignedIntegerTypeName).
						WithTag(SignedIntegerTypeTag).
						AsSuperType()

	// IntType represents the arbitrary-precision integer type `Int`
	IntType = NewNumericType(IntTypeName).
			WithTag(IntTypeTag)

	// Int8Type represents the 8-bit signed integer type `Int8`
	Int8Type = NewNumericType(Int8TypeName).
				WithTag(Int8TypeTag).
				WithIntRange(Int8TypeMinInt, Int8TypeMaxInt).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply().
				WithSaturatingDivide()

	// Int16Type represents the 16-bit signed integer type `Int16`
	Int16Type = NewNumericType(Int16TypeName).
				WithTag(Int16TypeTag).
				WithIntRange(Int16TypeMinInt, Int16TypeMaxInt).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply().
				WithSaturatingDivide()

	// Int32Type represents the 32-bit signed integer type `Int32`
	Int32Type = NewNumericType(Int32TypeName).
				WithTag(Int32TypeTag).
				WithIntRange(Int32TypeMinInt, Int32TypeMaxInt).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply().
				WithSaturatingDivide()

	// Int64Type represents the 64-bit signed integer type `Int64`
	Int64Type = NewNumericType(Int64TypeName).
				WithTag(Int64TypeTag).
				WithIntRange(Int64TypeMinInt, Int64TypeMaxInt).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply().
				WithSaturatingDivide()

	// Int128Type represents the 128-bit signed integer type `Int128`
	Int128Type = NewNumericType(Int128TypeName).
				WithTag(Int128TypeTag).
				WithIntRange(Int128TypeMinIntBig, Int128TypeMaxIntBig).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply().
				WithSaturatingDivide()

	// Int256Type represents the 256-bit signed integer type `Int256`
	Int256Type = NewNumericType(Int256TypeName).
				WithTag(Int256TypeTag).
				WithIntRange(Int256TypeMinIntBig, Int256TypeMaxIntBig).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply().
				WithSaturatingDivide()

	// UIntType represents the arbitrary-precision unsigned integer type `UInt`
	UIntType = NewNumericType(UIntTypeName).
				WithTag(UIntTypeTag).
				WithIntRange(UIntTypeMin, nil).
				WithSaturatingSubtract()

	// UInt8Type represents the 8-bit unsigned integer type `UInt8`
	// which checks for overflow and underflow
	UInt8Type = NewNumericType(UInt8TypeName).
				WithTag(UInt8TypeTag).
				WithIntRange(UInt8TypeMinInt, UInt8TypeMaxInt).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply()

	// UInt16Type represents the 16-bit unsigned integer type `UInt16`
	// which checks for overflow and underflow
	UInt16Type = NewNumericType(UInt16TypeName).
				WithTag(UInt16TypeTag).
				WithIntRange(UInt16TypeMinInt, UInt16TypeMaxInt).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply()

	// UInt32Type represents the 32-bit unsigned integer type `UInt32`
	// which checks for overflow and underflow
	UInt32Type = NewNumericType(UInt32TypeName).
				WithTag(UInt32TypeTag).
				WithIntRange(UInt32TypeMinInt, UInt32TypeMaxInt).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply()

	// UInt64Type represents the 64-bit unsigned integer type `UInt64`
	// which checks for overflow and underflow
	UInt64Type = NewNumericType(UInt64TypeName).
				WithTag(UInt64TypeTag).
				WithIntRange(UInt64TypeMinInt, UInt64TypeMaxInt).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply()

	// UInt128Type represents the 128-bit unsigned integer type `UInt128`
	// which checks for overflow and underflow
	UInt128Type = NewNumericType(UInt128TypeName).
				WithTag(UInt128TypeTag).
				WithIntRange(UInt128TypeMinIntBig, UInt128TypeMaxIntBig).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply()

	// UInt256Type represents the 256-bit unsigned integer type `UInt256`
	// which checks for overflow and underflow
	UInt256Type = NewNumericType(UInt256TypeName).
				WithTag(UInt256TypeTag).
				WithIntRange(UInt256TypeMinIntBig, UInt256TypeMaxIntBig).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply()

	// Word8Type represents the 8-bit unsigned integer type `Word8`
	// which does NOT check for overflow and underflow
	Word8Type = NewNumericType(Word8TypeName).
				WithTag(Word8TypeTag).
				WithIntRange(Word8TypeMinInt, Word8TypeMaxInt)

	// Word16Type represents the 16-bit unsigned integer type `Word16`
	// which does NOT check for overflow and underflow
	Word16Type = NewNumericType(Word16TypeName).
				WithTag(Word16TypeTag).
				WithIntRange(Word16TypeMinInt, Word16TypeMaxInt)

	// Word32Type represents the 32-bit unsigned integer type `Word32`
	// which does NOT check for overflow and underflow
	Word32Type = NewNumericType(Word32TypeName).
				WithTag(Word32TypeTag).
				WithIntRange(Word32TypeMinInt, Word32TypeMaxInt)

	// Word64Type represents the 64-bit unsigned integer type `Word64`
	// which does NOT check for overflow and underflow
	Word64Type = NewNumericType(Word64TypeName).
				WithTag(Word64TypeTag).
				WithIntRange(Word64TypeMinInt, Word64TypeMaxInt)

	// FixedPointType represents the super-type of all fixed-point types
	FixedPointType = NewNumericType(FixedPointTypeName).
					WithTag(FixedPointTypeTag).
					AsSuperType()

	// SignedFixedPointType represents the super-type of all signed fixed-point types
	SignedFixedPointType = NewNumericType(SignedFixedPointTypeName).
							WithTag(SignedFixedPointTypeTag).
							AsSuperType()

	// Fix64Type represents the 64-bit signed decimal fixed-point type `Fix64`
	// which has a scale of Fix64Scale, and checks for overflow and underflow
	Fix64Type = NewFixedPointNumericType(Fix64TypeName).
				WithTag(Fix64TypeTag).
				WithIntRange(Fix64TypeMinIntBig, Fix64TypeMaxIntBig).
				WithFractionalRange(Fix64TypeMinFractionalBig, Fix64TypeMaxFractionalBig).
				WithScale(Fix64Scale).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply().
				WithSaturatingDivide()

	// UFix64Type represents the 64-bit unsigned decimal fixed-point type `UFix64`
	// which has a scale of 1E9, and checks for overflow and underflow
	UFix64Type = NewFixedPointNumericType(UFix64TypeName).
				WithTag(UFix64TypeTag).
				WithIntRange(UFix64TypeMinIntBig, UFix64TypeMaxIntBig).
				WithFractionalRange(UFix64TypeMinFractionalBig, UFix64TypeMaxFractionalBig).
				WithScale(Fix64Scale).
				WithSaturatingAdd().
				WithSaturatingSubtract().
				WithSaturatingMultiply()
)
View Source
var (
	Int8TypeMinInt = new(big.Int).SetInt64(math.MinInt8)
	Int8TypeMaxInt = new(big.Int).SetInt64(math.MaxInt8)

	Int16TypeMinInt = new(big.Int).SetInt64(math.MinInt16)
	Int16TypeMaxInt = new(big.Int).SetInt64(math.MaxInt16)

	Int32TypeMinInt = new(big.Int).SetInt64(math.MinInt32)
	Int32TypeMaxInt = new(big.Int).SetInt64(math.MaxInt32)

	Int64TypeMinInt = new(big.Int).SetInt64(math.MinInt64)
	Int64TypeMaxInt = new(big.Int).SetInt64(math.MaxInt64)

	Int128TypeMinIntBig = func() *big.Int {
		int128TypeMin := big.NewInt(-1)
		int128TypeMin.Lsh(int128TypeMin, 127)
		return int128TypeMin
	}()

	Int128TypeMaxIntBig = func() *big.Int {
		int128TypeMax := big.NewInt(1)
		int128TypeMax.Lsh(int128TypeMax, 127)
		int128TypeMax.Sub(int128TypeMax, big.NewInt(1))
		return int128TypeMax
	}()

	Int256TypeMinIntBig = func() *big.Int {
		int256TypeMin := big.NewInt(-1)
		int256TypeMin.Lsh(int256TypeMin, 255)
		return int256TypeMin
	}()

	Int256TypeMaxIntBig = func() *big.Int {
		int256TypeMax := big.NewInt(1)
		int256TypeMax.Lsh(int256TypeMax, 255)
		int256TypeMax.Sub(int256TypeMax, big.NewInt(1))
		return int256TypeMax
	}()

	UIntTypeMin = new(big.Int)

	UInt8TypeMinInt = new(big.Int)
	UInt8TypeMaxInt = new(big.Int).SetUint64(math.MaxUint8)

	UInt16TypeMinInt = new(big.Int)
	UInt16TypeMaxInt = new(big.Int).SetUint64(math.MaxUint16)

	UInt32TypeMinInt = new(big.Int)
	UInt32TypeMaxInt = new(big.Int).SetUint64(math.MaxUint32)

	UInt64TypeMinInt = new(big.Int)
	UInt64TypeMaxInt = new(big.Int).SetUint64(math.MaxUint64)

	UInt128TypeMinIntBig = new(big.Int)

	UInt128TypeMaxIntBig = func() *big.Int {
		uInt128TypeMax := big.NewInt(1)
		uInt128TypeMax.Lsh(uInt128TypeMax, 128)
		uInt128TypeMax.Sub(uInt128TypeMax, big.NewInt(1))
		return uInt128TypeMax

	}()

	UInt256TypeMinIntBig = new(big.Int)

	UInt256TypeMaxIntBig = func() *big.Int {
		uInt256TypeMax := big.NewInt(1)
		uInt256TypeMax.Lsh(uInt256TypeMax, 256)
		uInt256TypeMax.Sub(uInt256TypeMax, big.NewInt(1))
		return uInt256TypeMax
	}()

	Word8TypeMinInt = new(big.Int)
	Word8TypeMaxInt = new(big.Int).SetUint64(math.MaxUint8)

	Word16TypeMinInt = new(big.Int)
	Word16TypeMaxInt = new(big.Int).SetUint64(math.MaxUint16)

	Word32TypeMinInt = new(big.Int)
	Word32TypeMaxInt = new(big.Int).SetUint64(math.MaxUint32)

	Word64TypeMinInt = new(big.Int)
	Word64TypeMaxInt = new(big.Int).SetUint64(math.MaxUint64)

	Fix64FactorBig = new(big.Int).SetUint64(uint64(Fix64Factor))

	Fix64TypeMinIntBig = fixedpoint.Fix64TypeMinIntBig
	Fix64TypeMaxIntBig = fixedpoint.Fix64TypeMaxIntBig

	Fix64TypeMinFractionalBig = fixedpoint.Fix64TypeMinFractionalBig
	Fix64TypeMaxFractionalBig = fixedpoint.Fix64TypeMaxFractionalBig

	UFix64TypeMinIntBig = fixedpoint.UFix64TypeMinIntBig
	UFix64TypeMaxIntBig = fixedpoint.UFix64TypeMaxIntBig

	UFix64TypeMinFractionalBig = fixedpoint.UFix64TypeMinFractionalBig
	UFix64TypeMaxFractionalBig = fixedpoint.UFix64TypeMaxFractionalBig
)

Numeric type ranges

View Source
var (
	// NoTypeTag is a special tag to represent mask with no types included
	NoTypeTag = newTypeTagFromLowerMask(noTypeMask)

	SignedIntegerTypeTag = newTypeTagFromLowerMask(signedIntegerTypeMask).
							Or(IntTypeTag).
							Or(Int8TypeTag).
							Or(Int16TypeTag).
							Or(Int32TypeTag).
							Or(Int64TypeTag).
							Or(Int128TypeTag).
							Or(Int256TypeTag)

	UnsignedIntegerTypeTag = newTypeTagFromLowerMask(unsignedIntegerTypeMask).
							Or(UIntTypeTag).
							Or(UInt8TypeTag).
							Or(UInt16TypeTag).
							Or(UInt32TypeTag).
							Or(UInt64TypeTag).
							Or(UInt128TypeTag).
							Or(UInt256TypeTag).
							Or(Word8TypeTag).
							Or(Word16TypeTag).
							Or(Word32TypeTag).
							Or(Word64TypeTag)

	IntegerTypeTag = newTypeTagFromLowerMask(integerTypeMask).
					Or(SignedIntegerTypeTag).
					Or(UnsignedIntegerTypeTag)

	SignedFixedPointTypeTag = newTypeTagFromLowerMask(signedFixedPointTypeMask).
							Or(Fix64TypeTag)

	UnsignedFixedPointTypeTag = newTypeTagFromLowerMask(unsignedFixedPointTypeMask).
								Or(UFix64TypeTag)

	FixedPointTypeTag = newTypeTagFromLowerMask(fixedPointTypeMask).
						Or(SignedFixedPointTypeTag).
						Or(UnsignedFixedPointTypeTag)

	SignedNumberTypeTag = newTypeTagFromLowerMask(signedNumberTypeMask).
						Or(SignedIntegerTypeTag).
						Or(SignedFixedPointTypeTag)

	NumberTypeTag = newTypeTagFromLowerMask(numberTypeMask).
					Or(IntegerTypeTag).
					Or(FixedPointTypeTag).
					Or(SignedNumberTypeTag)

	UIntTypeTag    = newTypeTagFromLowerMask(uintTypeMask)
	UInt8TypeTag   = newTypeTagFromLowerMask(uint8TypeMask)
	UInt16TypeTag  = newTypeTagFromLowerMask(uint16TypeMask)
	UInt32TypeTag  = newTypeTagFromLowerMask(uint32TypeMask)
	UInt64TypeTag  = newTypeTagFromLowerMask(uint64TypeMask)
	UInt128TypeTag = newTypeTagFromLowerMask(uint128TypeMask)
	UInt256TypeTag = newTypeTagFromLowerMask(uint256TypeMask)

	IntTypeTag    = newTypeTagFromLowerMask(intTypeMask)
	Int8TypeTag   = newTypeTagFromLowerMask(int8TypeMask)
	Int16TypeTag  = newTypeTagFromLowerMask(int16TypeMask)
	Int32TypeTag  = newTypeTagFromLowerMask(int32TypeMask)
	Int64TypeTag  = newTypeTagFromLowerMask(int64TypeMask)
	Int128TypeTag = newTypeTagFromLowerMask(int128TypeMask)
	Int256TypeTag = newTypeTagFromLowerMask(int256TypeMask)

	Word8TypeTag  = newTypeTagFromLowerMask(word8TypeMask)
	Word16TypeTag = newTypeTagFromLowerMask(word16TypeMask)
	Word32TypeTag = newTypeTagFromLowerMask(word32TypeMask)
	Word64TypeTag = newTypeTagFromLowerMask(word64TypeMask)

	Fix64TypeTag  = newTypeTagFromLowerMask(fix64TypeMask)
	UFix64TypeTag = newTypeTagFromLowerMask(ufix64TypeMask)

	StringTypeTag           = newTypeTagFromLowerMask(stringTypeMask)
	CharacterTypeTag        = newTypeTagFromLowerMask(characterTypeMask)
	BoolTypeTag             = newTypeTagFromLowerMask(boolTypeMask)
	NilTypeTag              = newTypeTagFromLowerMask(nilTypeMask)
	VoidTypeTag             = newTypeTagFromLowerMask(voidTypeMask)
	AddressTypeTag          = newTypeTagFromLowerMask(addressTypeMask)
	MetaTypeTag             = newTypeTagFromLowerMask(metaTypeMask)
	NeverTypeTag            = newTypeTagFromLowerMask(neverTypeMask)
	BlockTypeTag            = newTypeTagFromLowerMask(blockTypeMask)
	DeployedContractTypeTag = newTypeTagFromLowerMask(deployedContractMask)

	StoragePathTypeTag = newTypeTagFromLowerMask(storagePathTypeMask)
	PublicPathTypeTag  = newTypeTagFromLowerMask(publicPathTypeMask)
	PrivatePathTypeTag = newTypeTagFromLowerMask(privatePathTypeMask)

	CapabilityPathTypeTag = newTypeTagFromLowerMask(capabilityPathTypeMask).
							Or(PublicPathTypeTag).
							Or(PrivatePathTypeTag)

	PathTypeTag = newTypeTagFromLowerMask(pathTypeMask).
				Or(CapabilityPathTypeTag).
				Or(StoragePathTypeTag)

	ConstantSizedTypeTag = newTypeTagFromLowerMask(constantSizedTypeMask)
	VariableSizedTypeTag = newTypeTagFromLowerMask(variableSizedTypeMask)
	DictionaryTypeTag    = newTypeTagFromLowerMask(dictionaryTypeMask)
	CompositeTypeTag     = newTypeTagFromLowerMask(compositeTypeMask)
	ReferenceTypeTag     = newTypeTagFromLowerMask(referenceTypeMask)
	GenericTypeTag       = newTypeTagFromLowerMask(genericTypeMask)
	FunctionTypeTag      = newTypeTagFromLowerMask(functionTypeMask)
	InterfaceTypeTag     = newTypeTagFromLowerMask(interfaceTypeMask)

	RestrictedTypeTag  = newTypeTagFromUpperMask(restrictedTypeMask)
	CapabilityTypeTag  = newTypeTagFromUpperMask(capabilityTypeMask)
	InvalidTypeTag     = newTypeTagFromUpperMask(invalidTypeMask)
	TransactionTypeTag = newTypeTagFromUpperMask(transactionTypeMask)

	// AnyStructTypeTag only includes the types that are pre-known
	// to belong to AnyStruct type. This is more of an optimization.
	// Other types (derived types such as collections, etc.) are not possible
	// to be included in the mask without knowing their member types.
	// Hence, they are checked on demand in `getSuperTypeOfDerivedTypes()`.
	AnyStructTypeTag = newTypeTagFromLowerMask(anyStructTypeMask).
						Or(NeverTypeTag).
						Or(NumberTypeTag).
						Or(StringTypeTag).
						Or(ReferenceTypeTag).
						Or(NilTypeTag).
						Or(BoolTypeTag).
						Or(CharacterTypeTag).
						Or(VoidTypeTag).
						Or(MetaTypeTag).
						Or(PathTypeTag).
						Or(AddressTypeTag).
						Or(BlockTypeTag).
						Or(DeployedContractTypeTag).
						Or(CapabilityTypeTag).
						Or(FunctionTypeTag)

	AnyResourceTypeTag = newTypeTagFromLowerMask(anyResourceTypeMask)

	AnyTypeTag = newTypeTagFromLowerMask(anyTypeMask).
				Or(AnyStructTypeTag).
				Or(AnyResourceTypeTag).
				Or(ConstantSizedTypeTag).
				Or(VariableSizedTypeTag).
				Or(DictionaryTypeTag).
				Or(GenericTypeTag).
				Or(InterfaceTypeTag).
				Or(TransactionTypeTag).
				Or(RestrictedTypeTag)
)
View Source
var AccountContractsTypeBorrowFunctionType = func() *FunctionType {

	typeParameter := &TypeParameter{
		TypeBound: &ReferenceType{
			Type: AnyType,
		},
		Name: "T",
	}

	return &FunctionType{
		TypeParameters: []*TypeParameter{
			typeParameter,
		},
		Parameters: []Parameter{
			{
				Identifier:     "name",
				TypeAnnotation: NewTypeAnnotation(StringType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(
			&OptionalType{
				Type: &GenericType{
					TypeParameter: typeParameter,
				},
			},
		),
	}
}()
View Source
var AccountContractsTypeGetFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier: "name",
			TypeAnnotation: NewTypeAnnotation(
				StringType,
			),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		&OptionalType{
			Type: DeployedContractType,
		},
	),
}
View Source
var AccountKeyType = func() *CompositeType {

	accountKeyType := &CompositeType{
		Identifier: AccountKeyTypeName,
		Kind:       common.CompositeKindStructure,
		importable: false,
	}

	const accountKeyKeyIndexFieldDocString = `The index of the account key`
	const accountKeyPublicKeyFieldDocString = `The public key of the account`
	const accountKeyHashAlgorithmFieldDocString = `The hash algorithm used by the public key`
	const accountKeyWeightFieldDocString = `The weight assigned to the public key`
	const accountKeyIsRevokedFieldDocString = `Flag indicating whether the key is revoked`

	var members = []*Member{
		NewUnmeteredPublicConstantFieldMember(
			accountKeyType,
			AccountKeyKeyIndexFieldName,
			IntType,
			accountKeyKeyIndexFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			accountKeyType,
			AccountKeyPublicKeyFieldName,
			PublicKeyType,
			accountKeyPublicKeyFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			accountKeyType,
			AccountKeyHashAlgoFieldName,
			HashAlgorithmType,
			accountKeyHashAlgorithmFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			accountKeyType,
			AccountKeyWeightFieldName,
			UFix64Type,
			accountKeyWeightFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			accountKeyType,
			AccountKeyIsRevokedFieldName,
			BoolType,
			accountKeyIsRevokedFieldDocString,
		),
	}

	accountKeyType.Members = GetMembersAsMap(members)
	accountKeyType.Fields = GetFieldNames(members)
	return accountKeyType
}()

AccountKeyType represents the key associated with an account.

View Source
var AccountKeysTypeCountFieldType = UInt64Type
View Source
var AccountKeysTypeForEachFunctionType = func() *FunctionType {

	iterFunctionType := &FunctionType{
		Parameters: []Parameter{
			{
				TypeAnnotation: NewTypeAnnotation(AccountKeyType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(BoolType),
	}

	return &FunctionType{
		Parameters: []Parameter{
			{
				Label:          ArgumentLabelNotRequired,
				Identifier:     "function",
				TypeAnnotation: NewTypeAnnotation(iterFunctionType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(VoidType),
	}
}()

fun keys.forEach(_ function: ((AccountKey): Bool)): Void

View Source
var AccountKeysTypeGetFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier:     AccountKeyKeyIndexFieldName,
			TypeAnnotation: NewTypeAnnotation(IntType),
		},
	},
	ReturnTypeAnnotation:  NewTypeAnnotation(&OptionalType{Type: AccountKeyType}),
	RequiredArgumentCount: RequiredArgumentCount(1),
}
View Source
var AccountTypeGetLinkTargetFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "capabilityPath",
			TypeAnnotation: NewTypeAnnotation(CapabilityPathType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		&OptionalType{
			Type: PathType,
		},
	),
}
View Source
var AddressConversionFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "value",
			TypeAnnotation: NewTypeAnnotation(IntegerType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(TheAddressType),
	ArgumentExpressionsCheck: func(checker *Checker, argumentExpressions []ast.Expression, _ ast.Range) {
		if len(argumentExpressions) < 1 {
			return
		}

		intExpression, ok := argumentExpressions[0].(*ast.IntegerExpression)
		if !ok {
			return
		}

		CheckAddressLiteral(nil, intExpression, checker.report)
	},
}
View Source
var AddressTypeMaxIntBig = new(big.Int).SetUint64(math.MaxUint64)
View Source
var AddressTypeMinIntBig = new(big.Int)
View Source
var AddressTypeToBytesFunctionType = &FunctionType{
	ReturnTypeAnnotation: NewTypeAnnotation(
		ByteArrayType,
	),
}
View Source
var AllSignedFixedPointTypes = []Type{
	Fix64Type,
}
View Source
var AllUnsignedFixedPointTypes = []Type{
	UFix64Type,
}
View Source
var AnyResourceType = &SimpleType{
	Name:          "AnyResource",
	QualifiedName: "AnyResource",
	TypeID:        "AnyResource",
	tag:           AnyResourceTypeTag,
	IsResource:    true,

	Storable:  true,
	Equatable: false,

	Exportable: true,
	Importable: false,
}

AnyResourceType represents the top type of all resource types

View Source
var AnyStructType = &SimpleType{
	Name:          "AnyStruct",
	QualifiedName: "AnyStruct",
	TypeID:        "AnyStruct",
	tag:           AnyStructTypeTag,
	IsResource:    false,

	Storable:   true,
	Equatable:  false,
	Exportable: true,

	Importable: true,
}

AnyStructType represents the top type of all non-resource types

View Source
var AnyType = &SimpleType{
	Name:          "Any",
	QualifiedName: "Any",
	TypeID:        "Any",
	tag:           AnyTypeTag,
	IsResource:    false,

	Storable:  true,
	Equatable: false,

	Exportable: false,
	Importable: false,
}

AnyType represents the top type of all types. NOTE: This type is only used internally and is not available in programs.

View Source
var AuthAccountContractsType = func() *CompositeType {

	authAccountContractsType := &CompositeType{
		Identifier: AuthAccountContractsTypeName,
		Kind:       common.CompositeKindStructure,
		importable: false,
	}

	var members = []*Member{
		NewUnmeteredPublicFunctionMember(
			authAccountContractsType,
			AuthAccountContractsTypeAddFunctionName,
			AuthAccountContractsTypeAddFunctionType,
			authAccountContractsTypeAddFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountContractsType,
			AuthAccountContractsTypeUpdateExperimentalFunctionName,
			AuthAccountContractsTypeUpdateExperimentalFunctionType,
			authAccountContractsTypeUpdateExperimentalFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountContractsType,
			AccountContractsTypeGetFunctionName,
			AccountContractsTypeGetFunctionType,
			accountContractsTypeGetFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountContractsType,
			AccountContractsTypeBorrowFunctionName,
			AccountContractsTypeBorrowFunctionType,
			accountContractsTypeBorrowFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountContractsType,
			AuthAccountContractsTypeRemoveFunctionName,
			AuthAccountContractsTypeRemoveFunctionType,
			authAccountContractsTypeRemoveFunctionDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			authAccountContractsType,
			AccountContractsTypeNamesFieldName,
			accountContractsTypeNamesFieldType,
			accountContractsTypeNamesFieldDocString,
		),
	}

	authAccountContractsType.Members = GetMembersAsMap(members)
	authAccountContractsType.Fields = GetFieldNames(members)
	return authAccountContractsType
}()

AuthAccountContractsType represents the type `AuthAccount.Contracts`

View Source
var AuthAccountContractsTypeAddFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier: "name",
			TypeAnnotation: NewTypeAnnotation(
				StringType,
			),
		},
		{
			Identifier: "code",
			TypeAnnotation: NewTypeAnnotation(
				ByteArrayType,
			),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		DeployedContractType,
	),

	RequiredArgumentCount: RequiredArgumentCount(2),
}
View Source
var AuthAccountContractsTypeRemoveFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier:     "name",
			TypeAnnotation: NewTypeAnnotation(StringType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		&OptionalType{
			Type: DeployedContractType,
		},
	),
}
View Source
var AuthAccountContractsTypeUpdateExperimentalFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier: "name",
			TypeAnnotation: NewTypeAnnotation(
				StringType,
			),
		},
		{
			Identifier: "code",
			TypeAnnotation: NewTypeAnnotation(
				ByteArrayType,
			),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		DeployedContractType,
	),
}
View Source
var AuthAccountForEachPrivateFunctionType = AccountForEachFunctionType(PrivatePathType)
View Source
var AuthAccountForEachPublicFunctionType = AccountForEachFunctionType(PublicPathType)
View Source
var AuthAccountForEachStoredFunctionType = AccountForEachFunctionType(StoragePathType)
View Source
var AuthAccountInboxType = func() *CompositeType {

	accountInbox := &CompositeType{
		Identifier: AuthAccountInboxTypeName,
		Kind:       common.CompositeKindStructure,
		importable: false,
	}

	var members = []*Member{
		NewUnmeteredPublicFunctionMember(
			accountInbox,
			AuthAccountTypeInboxClaimFunctionName,
			AuthAccountTypeInboxClaimFunctionType,
			authAccountTypeInboxClaimFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			accountInbox,
			AuthAccountTypeInboxPublishFunctionName,
			AuthAccountTypeInboxPublishFunctionType,
			authAccountTypeInboxPublishFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			accountInbox,
			AuthAccountTypeInboxUnpublishFunctionName,
			AuthAccountTypeInboxUnpublishFunctionType,
			authAccountTypeInboxUnpublishFunctionDocString,
		),
	}

	accountInbox.Members = GetMembersAsMap(members)
	accountInbox.Fields = GetFieldNames(members)
	return accountInbox
}()

AuthAccountInboxType represents the account's inbox.

View Source
var AuthAccountInboxTypeName = "Inbox"
View Source
var AuthAccountKeysType = func() *CompositeType {

	accountKeys := &CompositeType{
		Identifier: AccountKeysTypeName,
		Kind:       common.CompositeKindStructure,
		importable: false,
	}

	var members = []*Member{
		NewUnmeteredPublicFunctionMember(
			accountKeys,
			AccountKeysTypeAddFunctionName,
			AuthAccountKeysTypeAddFunctionType,
			authAccountKeysTypeAddFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			accountKeys,
			AccountKeysTypeGetFunctionName,
			AccountKeysTypeGetFunctionType,
			accountKeysTypeGetFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			accountKeys,
			AccountKeysTypeRevokeFunctionName,
			AuthAccountKeysTypeRevokeFunctionType,
			authAccountKeysTypeRevokeFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			accountKeys,
			AccountKeysTypeForEachFunctionName,
			AccountKeysTypeForEachFunctionType,
			accountKeysTypeForEachFunctionDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			accountKeys,
			AccountKeysTypeCountFieldName,
			AccountKeysTypeCountFieldType,
			accountKeysTypeCountFieldDocString,
		),
	}

	accountKeys.Members = GetMembersAsMap(members)
	accountKeys.Fields = GetFieldNames(members)
	return accountKeys
}()

AuthAccountKeysType represents the keys associated with an auth account.

View Source
var AuthAccountKeysTypeAddFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier:     AccountKeyPublicKeyFieldName,
			TypeAnnotation: NewTypeAnnotation(PublicKeyType),
		},
		{
			Identifier:     AccountKeyHashAlgoFieldName,
			TypeAnnotation: NewTypeAnnotation(HashAlgorithmType),
		},
		{
			Identifier:     AccountKeyWeightFieldName,
			TypeAnnotation: NewTypeAnnotation(UFix64Type),
		},
	},
	ReturnTypeAnnotation:  NewTypeAnnotation(AccountKeyType),
	RequiredArgumentCount: RequiredArgumentCount(3),
}
View Source
var AuthAccountKeysTypeRevokeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier:     AccountKeyKeyIndexFieldName,
			TypeAnnotation: NewTypeAnnotation(IntType),
		},
	},
	ReturnTypeAnnotation:  NewTypeAnnotation(&OptionalType{Type: AccountKeyType}),
	RequiredArgumentCount: RequiredArgumentCount(1),
}
View Source
var AuthAccountPrivatePathsType = &VariableSizedType{
	Type: PrivatePathType,
}
View Source
var AuthAccountPublicPathsType = &VariableSizedType{
	Type: PublicPathType,
}
View Source
var AuthAccountStoragePathsType = &VariableSizedType{
	Type: StoragePathType,
}
View Source
var AuthAccountType = func() *CompositeType {

	authAccountType := &CompositeType{
		Identifier:         AuthAccountTypeName,
		Kind:               common.CompositeKindStructure,
		hasComputedMembers: true,
		importable:         false,
		NestedTypes: func() *StringTypeOrderedMap {
			nestedTypes := &StringTypeOrderedMap{}
			nestedTypes.Set(AuthAccountContractsTypeName, AuthAccountContractsType)
			nestedTypes.Set(AccountKeysTypeName, AuthAccountKeysType)
			nestedTypes.Set(AuthAccountInboxTypeName, AuthAccountInboxType)
			return nestedTypes
		}(),
	}

	AuthAccountTypeLinkAccountFunctionType = &FunctionType{
		Parameters: []Parameter{
			{
				Label:          ArgumentLabelNotRequired,
				Identifier:     "newCapabilityPath",
				TypeAnnotation: NewTypeAnnotation(CapabilityPathType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(
			&OptionalType{
				Type: &CapabilityType{
					BorrowType: &ReferenceType{
						Type: authAccountType,
					},
				},
			},
		),
	}

	var members = []*Member{
		NewUnmeteredPublicConstantFieldMember(
			authAccountType,
			AuthAccountTypeAddressFieldName,
			TheAddressType,
			accountTypeAddressFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			authAccountType,
			AuthAccountTypeBalanceFieldName,
			UFix64Type,
			accountTypeAccountBalanceFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			authAccountType,
			AuthAccountTypeAvailableBalanceFieldName,
			UFix64Type,
			accountTypeAccountAvailableBalanceFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			authAccountType,
			AuthAccountTypeStorageUsedFieldName,
			UInt64Type,
			accountTypeStorageUsedFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			authAccountType,
			AuthAccountTypeStorageCapacityFieldName,
			UInt64Type,
			accountTypeStorageCapacityFieldDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeAddPublicKeyFunctionName,
			AuthAccountTypeAddPublicKeyFunctionType,
			authAccountTypeAddPublicKeyFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeRemovePublicKeyFunctionName,
			AuthAccountTypeRemovePublicKeyFunctionType,
			authAccountTypeRemovePublicKeyFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeSaveFunctionName,
			AuthAccountTypeSaveFunctionType,
			authAccountTypeSaveFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeTypeFunctionName,
			AuthAccountTypeTypeFunctionType,
			authAccountTypeTypeFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeLoadFunctionName,
			AuthAccountTypeLoadFunctionType,
			authAccountTypeLoadFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeCopyFunctionName,
			AuthAccountTypeCopyFunctionType,
			authAccountTypeCopyFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeBorrowFunctionName,
			AuthAccountTypeBorrowFunctionType,
			authAccountTypeBorrowFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeLinkFunctionName,
			AuthAccountTypeLinkFunctionType,
			authAccountTypeLinkFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeLinkAccountFunctionName,
			AuthAccountTypeLinkAccountFunctionType,
			authAccountTypeLinkAccountFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeUnlinkFunctionName,
			AuthAccountTypeUnlinkFunctionType,
			authAccountTypeUnlinkFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeGetCapabilityFunctionName,
			AuthAccountTypeGetCapabilityFunctionType,
			authAccountTypeGetCapabilityFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeGetLinkTargetFunctionName,
			AccountTypeGetLinkTargetFunctionType,
			accountTypeGetLinkTargetFunctionDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			authAccountType,
			AuthAccountTypeContractsFieldName,
			AuthAccountContractsType,
			accountTypeContractsFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			authAccountType,
			AuthAccountTypeKeysFieldName,
			AuthAccountKeysType,
			accountTypeKeysFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			authAccountType,
			AuthAccountTypeInboxFieldName,
			AuthAccountInboxType,
			accountInboxDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			authAccountType,
			AuthAccountTypePublicPathsFieldName,
			AuthAccountPublicPathsType,
			authAccountTypePublicPathsFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			authAccountType,
			AuthAccountTypePrivatePathsFieldName,
			AuthAccountPrivatePathsType,
			authAccountTypePrivatePathsFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			authAccountType,
			AuthAccountTypeStoragePathsFieldName,
			AuthAccountStoragePathsType,
			authAccountTypeStoragePathsFieldDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeForEachPublicFunctionName,
			AuthAccountForEachPublicFunctionType,
			authAccountForEachPublicDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeForEachPrivateFunctionName,
			AuthAccountForEachPrivateFunctionType,
			authAccountForEachPrivateDocString,
		),
		NewUnmeteredPublicFunctionMember(
			authAccountType,
			AuthAccountTypeForEachStoredFunctionName,
			AuthAccountForEachStoredFunctionType,
			authAccountForEachStoredDocString,
		),
	}

	authAccountType.Members = GetMembersAsMap(members)
	authAccountType.Fields = GetFieldNames(members)
	return authAccountType
}()

AuthAccountType represents the authorized access to an account. Access to an AuthAccount means having full access to its storage, public keys, and code. Only signed transactions can get the AuthAccount for an account.

View Source
var AuthAccountTypeAddPublicKeyFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:      ArgumentLabelNotRequired,
			Identifier: "key",
			TypeAnnotation: NewTypeAnnotation(
				ByteArrayType,
			),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		VoidType,
	),
}
View Source
var AuthAccountTypeBorrowFunctionType = func() *FunctionType {

	typeParameter := &TypeParameter{
		TypeBound: &ReferenceType{
			Type: AnyType,
		},
		Name: "T",
	}

	return &FunctionType{
		TypeParameters: []*TypeParameter{
			typeParameter,
		},
		Parameters: []Parameter{
			{
				Label:          "from",
				Identifier:     "path",
				TypeAnnotation: NewTypeAnnotation(StoragePathType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(
			&OptionalType{
				Type: &GenericType{
					TypeParameter: typeParameter,
				},
			},
		),
	}
}()
View Source
var AuthAccountTypeCopyFunctionType = func() *FunctionType {

	typeParameter := &TypeParameter{
		Name:      "T",
		TypeBound: AnyStructType,
	}

	return &FunctionType{
		TypeParameters: []*TypeParameter{
			typeParameter,
		},
		Parameters: []Parameter{
			{
				Label:          "from",
				Identifier:     "path",
				TypeAnnotation: NewTypeAnnotation(StoragePathType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(
			&OptionalType{
				Type: &GenericType{
					TypeParameter: typeParameter,
				},
			},
		),
	}
}()
View Source
var AuthAccountTypeGetCapabilityFunctionType = func() *FunctionType {

	typeParameter := &TypeParameter{
		TypeBound: &ReferenceType{
			Type: AnyType,
		},
		Name:     "T",
		Optional: true,
	}

	return &FunctionType{
		TypeParameters: []*TypeParameter{
			typeParameter,
		},
		Parameters: []Parameter{
			{
				Label:          ArgumentLabelNotRequired,
				Identifier:     "capabilityPath",
				TypeAnnotation: NewTypeAnnotation(CapabilityPathType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(
			&CapabilityType{
				BorrowType: &GenericType{
					TypeParameter: typeParameter,
				},
			},
		),
	}
}()
View Source
var AuthAccountTypeInboxClaimFunctionType = func() *FunctionType {
	typeParameter := &TypeParameter{
		Name: "T",
		TypeBound: &ReferenceType{
			Type: AnyType,
		},
	}
	return &FunctionType{
		TypeParameters: []*TypeParameter{
			typeParameter,
		},
		Parameters: []Parameter{
			{
				Label:          ArgumentLabelNotRequired,
				Identifier:     "name",
				TypeAnnotation: NewTypeAnnotation(StringType),
			},
			{
				Identifier:     "provider",
				TypeAnnotation: NewTypeAnnotation(TheAddressType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(
			&OptionalType{
				Type: &CapabilityType{
					BorrowType: &GenericType{
						TypeParameter: typeParameter,
					},
				},
			},
		),
	}
}()
View Source
var AuthAccountTypeInboxPublishFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "value",
			TypeAnnotation: NewTypeAnnotation(&CapabilityType{}),
		},
		{
			Identifier:     "name",
			TypeAnnotation: NewTypeAnnotation(StringType),
		},
		{
			Identifier:     "recipient",
			TypeAnnotation: NewTypeAnnotation(TheAddressType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		VoidType,
	),
}
View Source
var AuthAccountTypeInboxUnpublishFunctionType = func() *FunctionType {
	typeParameter := &TypeParameter{
		Name: "T",
		TypeBound: &ReferenceType{
			Type: AnyType,
		},
	}
	return &FunctionType{
		TypeParameters: []*TypeParameter{
			typeParameter,
		},
		Parameters: []Parameter{
			{
				Label:          ArgumentLabelNotRequired,
				Identifier:     "name",
				TypeAnnotation: NewTypeAnnotation(StringType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(
			&OptionalType{
				Type: &CapabilityType{
					BorrowType: &GenericType{
						TypeParameter: typeParameter,
					},
				},
			},
		),
	}
}()
View Source
var AuthAccountTypeLinkFunctionType = func() *FunctionType {

	typeParameter := &TypeParameter{
		TypeBound: &ReferenceType{
			Type: AnyType,
		},
		Name: "T",
	}

	return &FunctionType{
		TypeParameters: []*TypeParameter{
			typeParameter,
		},
		Parameters: []Parameter{
			{
				Label:          ArgumentLabelNotRequired,
				Identifier:     "newCapabilityPath",
				TypeAnnotation: NewTypeAnnotation(CapabilityPathType),
			},
			{
				Identifier:     "target",
				TypeAnnotation: NewTypeAnnotation(PathType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(
			&OptionalType{
				Type: &CapabilityType{
					BorrowType: &GenericType{
						TypeParameter: typeParameter,
					},
				},
			},
		),
	}
}()
View Source
var AuthAccountTypeLoadFunctionType = func() *FunctionType {

	typeParameter := &TypeParameter{
		Name:      "T",
		TypeBound: StorableType,
	}

	return &FunctionType{
		TypeParameters: []*TypeParameter{
			typeParameter,
		},
		Parameters: []Parameter{
			{
				Label:          "from",
				Identifier:     "path",
				TypeAnnotation: NewTypeAnnotation(StoragePathType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(
			&OptionalType{
				Type: &GenericType{
					TypeParameter: typeParameter,
				},
			},
		),
	}
}()
View Source
var AuthAccountTypeRemovePublicKeyFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:      ArgumentLabelNotRequired,
			Identifier: "index",
			TypeAnnotation: NewTypeAnnotation(
				IntType,
			),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		VoidType,
	),
}
View Source
var AuthAccountTypeSaveFunctionType = func() *FunctionType {

	typeParameter := &TypeParameter{
		Name:      "T",
		TypeBound: StorableType,
	}

	return &FunctionType{
		TypeParameters: []*TypeParameter{
			typeParameter,
		},
		Parameters: []Parameter{
			{
				Label:      ArgumentLabelNotRequired,
				Identifier: "value",
				TypeAnnotation: NewTypeAnnotation(
					&GenericType{
						TypeParameter: typeParameter,
					},
				),
			},
			{
				Label:          "to",
				Identifier:     "path",
				TypeAnnotation: NewTypeAnnotation(StoragePathType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(VoidType),
	}
}()
View Source
var AuthAccountTypeTypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          "at",
			Identifier:     "path",
			TypeAnnotation: NewTypeAnnotation(StoragePathType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		&OptionalType{
			Type: MetaType,
		},
	),
}
View Source
var AuthAccountTypeUnlinkFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "capabilityPath",
			TypeAnnotation: NewTypeAnnotation(CapabilityPathType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(VoidType),
}
View Source
var BaseTypeActivation = NewVariableActivation(nil)

BaseTypeActivation is the base activation that contains the types available in programs

View Source
var BaseValueActivation = NewVariableActivation(nil)

BaseValueActivation is the base activation that contains the values available in programs

View Source
var BlockType = &SimpleType{
	Name:          BlockTypeName,
	QualifiedName: BlockTypeName,
	TypeID:        BlockTypeName,
	tag:           BlockTypeTag,
	IsResource:    false,
	Storable:      false,
	Equatable:     false,
	Exportable:    false,
	Importable:    false,
	Members: func(t *SimpleType) map[string]MemberResolver {
		return map[string]MemberResolver{
			BlockTypeHeightFieldName: {
				Kind: common.DeclarationKindField,
				Resolve: func(memoryGauge common.MemoryGauge,
					identifier string,
					targetRange ast.Range,
					report func(error)) *Member {

					return NewPublicConstantFieldMember(
						memoryGauge,
						t,
						identifier,
						BlockTypeHeightFieldType,
						BlockTypeHeightFieldDocString,
					)
				},
			},
			BlockTypeViewFieldName: {
				Kind: common.DeclarationKindField,
				Resolve: func(memoryGauge common.MemoryGauge,
					identifier string,
					targetRange ast.Range,
					report func(error)) *Member {

					return NewPublicConstantFieldMember(
						memoryGauge,
						t,
						identifier,
						BlockTypeViewFieldType,
						BlockTypeViewFieldDocString,
					)
				},
			},
			BlockTypeTimestampFieldName: {
				Kind: common.DeclarationKindField,
				Resolve: func(memoryGauge common.MemoryGauge,
					identifier string,
					targetRange ast.Range,
					report func(error)) *Member {

					return NewPublicConstantFieldMember(
						memoryGauge,
						t,
						identifier,
						BlockTypeTimestampFieldType,
						BlockTypeTimestampFieldDocString,
					)
				},
			},
			BlockTypeIdFieldName: {
				Kind: common.DeclarationKindField,
				Resolve: func(memoryGauge common.MemoryGauge,
					identifier string,
					targetRange ast.Range,
					report func(error)) *Member {

					return NewPublicConstantFieldMember(
						memoryGauge,
						t,
						identifier,
						BlockTypeIdFieldType,
						BlockTypeIdFieldDocString,
					)
				},
			},
		}
	},
}
View Source
var BlockTypeHeightFieldType = UInt64Type
View Source
var BlockTypeIdFieldType = &ConstantSizedType{
	Type: UInt8Type,
	Size: 32,
}
View Source
var BlockTypeTimestampFieldType = UFix64Type
View Source
var BlockTypeViewFieldType = UInt64Type
View Source
var BoolType = &SimpleType{
	Name:          "Bool",
	QualifiedName: "Bool",
	TypeID:        "Bool",
	tag:           BoolTypeTag,
	IsResource:    false,
	Storable:      true,
	Equatable:     true,
	Exportable:    true,
	Importable:    true,
}

BoolType represents the boolean type

View Source
var ByteArrayArrayType = &VariableSizedType{
	Type: ByteArrayType,
}

ByteArrayArrayType represents the type [[UInt8]]

View Source
var ByteArrayType = &VariableSizedType{
	Type: UInt8Type,
}

ByteArrayType represents the type [UInt8]

View Source
var CapabilityPathType = &SimpleType{
	Name:          "CapabilityPath",
	QualifiedName: "CapabilityPath",
	TypeID:        "CapabilityPath",
	tag:           CapabilityPathTypeTag,
	IsResource:    false,
	Storable:      true,
	Equatable:     true,
	Exportable:    true,
	Importable:    true,
	IsSuperTypeOf: func(subType Type) bool {
		return IsSubType(subType, PrivatePathType) ||
			IsSubType(subType, PublicPathType)
	},
}

CapabilityPathType

View Source
var CapabilityTypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "type",
			TypeAnnotation: NewTypeAnnotation(MetaType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		&OptionalType{
			Type: MetaType,
		},
	),
}
View Source
var CharacterType = &SimpleType{
	Name:          "Character",
	QualifiedName: "Character",
	TypeID:        "Character",
	tag:           CharacterTypeTag,
	IsResource:    false,
	Storable:      true,
	Equatable:     true,
	Exportable:    true,
	Importable:    true,
}

CharacterType represents the character type

View Source
var CompositeTypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "identifier",
			TypeAnnotation: NewTypeAnnotation(StringType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		&OptionalType{
			Type: MetaType,
		},
	),
}
View Source
var ConstantSizedArrayTypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier:     "type",
			TypeAnnotation: NewTypeAnnotation(MetaType),
		},
		{
			Identifier:     "size",
			TypeAnnotation: NewTypeAnnotation(IntType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(MetaType),
}
View Source
var DeployedContractType = &SimpleType{
	Name:          "DeployedContract",
	QualifiedName: "DeployedContract",
	TypeID:        "DeployedContract",
	tag:           DeployedContractTypeTag,
	IsResource:    false,
	Storable:      false,
	Equatable:     false,
	Exportable:    false,
	Importable:    false,
	Members: func(t *SimpleType) map[string]MemberResolver {
		return map[string]MemberResolver{
			DeployedContractTypeAddressFieldName: {
				Kind: common.DeclarationKindField,
				Resolve: func(memoryGauge common.MemoryGauge, identifier string, _ ast.Range, _ func(error)) *Member {
					return NewPublicConstantFieldMember(
						memoryGauge,
						t,
						identifier,
						TheAddressType,
						deployedContractTypeAddressFieldDocString,
					)
				},
			},
			DeployedContractTypeNameFieldName: {
				Kind: common.DeclarationKindField,
				Resolve: func(memoryGauge common.MemoryGauge, identifier string, _ ast.Range, _ func(error)) *Member {
					return NewPublicConstantFieldMember(
						memoryGauge,
						t,
						identifier,
						StringType,
						deployedContractTypeNameFieldDocString,
					)
				},
			},
			DeployedContractTypeCodeFieldName: {
				Kind: common.DeclarationKindField,
				Resolve: func(memoryGauge common.MemoryGauge, identifier string, _ ast.Range, _ func(error)) *Member {
					return NewPublicConstantFieldMember(
						memoryGauge,
						t,
						identifier,
						ByteArrayType,
						deployedContractTypeCodeFieldDocString,
					)
				},
			},
			DeployedContractTypePublicTypesFunctionName: {
				Kind: common.DeclarationKindFunction,
				Resolve: func(memoryGauge common.MemoryGauge, identifier string, _ ast.Range, report func(error)) *Member {
					return NewPublicFunctionMember(
						memoryGauge,
						t,
						identifier,
						DeployedContractTypePublicTypesFunctionType,
						DeployedContractTypePublicTypesFunctionDocString,
					)
				},
			},
		}
	},
}

DeployedContractType represents the type `DeployedContract`

View Source
var DeployedContractTypePublicTypesFunctionType = &FunctionType{
	ReturnTypeAnnotation: NewTypeAnnotation(
		&VariableSizedType{
			Type: MetaType,
		},
	),
}
View Source
var DictionaryTypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier:     "key",
			TypeAnnotation: NewTypeAnnotation(MetaType),
		},
		{
			Identifier:     "value",
			TypeAnnotation: NewTypeAnnotation(MetaType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		&OptionalType{
			Type: MetaType,
		},
	),
}
View Source
var FunctionTypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier: "parameters",
			TypeAnnotation: NewTypeAnnotation(
				&VariableSizedType{
					Type: MetaType,
				},
			),
		},
		{
			Identifier:     "return",
			TypeAnnotation: NewTypeAnnotation(MetaType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(MetaType),
}
View Source
var GetTypeFunctionType = &FunctionType{
	ReturnTypeAnnotation: NewTypeAnnotation(
		MetaType,
	),
}
View Source
var HashAlgorithmTypeHashFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "data",
			TypeAnnotation: NewTypeAnnotation(ByteArrayType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		ByteArrayType,
	),
}
View Source
var HashAlgorithmTypeHashWithTagFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:      ArgumentLabelNotRequired,
			Identifier: "data",
			TypeAnnotation: NewTypeAnnotation(
				ByteArrayType,
			),
		},
		{
			Identifier:     "tag",
			TypeAnnotation: NewTypeAnnotation(StringType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		ByteArrayType,
	),
}
View Source
var InterfaceTypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "identifier",
			TypeAnnotation: NewTypeAnnotation(StringType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		&OptionalType{
			Type: MetaType,
		},
	),
}
View Source
var InvalidType = &SimpleType{
	Name:          "<<invalid>>",
	QualifiedName: "<<invalid>>",
	TypeID:        "<<invalid>>",
	tag:           InvalidTypeTag,
	IsResource:    false,
	Storable:      false,
	Equatable:     false,
	Exportable:    false,
	Importable:    false,
}

InvalidType represents a type that is invalid. It is the result of type checking failing and can't be expressed in programs.

View Source
var IsInstanceFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:      ArgumentLabelNotRequired,
			Identifier: "type",
			TypeAnnotation: NewTypeAnnotation(
				MetaType,
			),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		BoolType,
	),
}
View Source
var MetaType = &SimpleType{
	Name:          MetaTypeName,
	QualifiedName: MetaTypeName,
	TypeID:        MetaTypeName,
	tag:           MetaTypeTag,
	IsResource:    false,
	Storable:      true,
	Equatable:     true,
	Exportable:    true,
	Importable:    true,
}

MetaType represents the type of a type.

View Source
var MetaTypeIsSubtypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          "of",
			Identifier:     "otherType",
			TypeAnnotation: NewTypeAnnotation(MetaType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		BoolType,
	),
}
View Source
var NativeCompositeTypes = map[string]*CompositeType{}
View Source
var NeverType = &SimpleType{
	Name:          "Never",
	QualifiedName: "Never",
	TypeID:        "Never",
	tag:           NeverTypeTag,
	IsResource:    false,
	Storable:      false,
	Equatable:     false,
	Exportable:    false,
	Importable:    false,
}

NeverType represents the bottom type

View Source
var NilType = &OptionalType{
	Type: NeverType,
}
View Source
var OptionalTypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "type",
			TypeAnnotation: NewTypeAnnotation(MetaType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(MetaType),
}
View Source
var PathType = &SimpleType{
	Name:          "Path",
	QualifiedName: "Path",
	TypeID:        "Path",
	tag:           PathTypeTag,
	IsResource:    false,
	Storable:      true,
	Equatable:     true,
	Exportable:    true,
	Importable:    true,
	IsSuperTypeOf: func(subType Type) bool {
		return IsSubType(subType, StoragePathType) ||
			IsSubType(subType, CapabilityPathType)
	},
}

PathType

View Source
var PrivatePathConversionFunctionType = pathConversionFunctionType(PrivatePathType)
View Source
var PrivatePathType = &SimpleType{
	Name:          "PrivatePath",
	QualifiedName: "PrivatePath",
	TypeID:        "PrivatePath",
	tag:           PrivatePathTypeTag,
	IsResource:    false,
	Storable:      true,
	Equatable:     true,
	Exportable:    true,
	Importable:    true,
}

PrivatePathType

View Source
var PublicAccountContractsType = func() *CompositeType {

	publicAccountContractsType := &CompositeType{
		Identifier: PublicAccountContractsTypeName,
		Kind:       common.CompositeKindStructure,
		importable: false,
	}

	var members = []*Member{
		NewUnmeteredPublicFunctionMember(
			publicAccountContractsType,
			AccountContractsTypeGetFunctionName,
			AccountContractsTypeGetFunctionType,
			accountContractsTypeGetFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			publicAccountContractsType,
			AccountContractsTypeBorrowFunctionName,
			AccountContractsTypeBorrowFunctionType,
			accountContractsTypeBorrowFunctionDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			publicAccountContractsType,
			AccountContractsTypeNamesFieldName,
			accountContractsTypeNamesFieldType,
			accountContractsTypeNamesFieldDocString,
		),
	}

	publicAccountContractsType.Members = GetMembersAsMap(members)
	publicAccountContractsType.Fields = GetFieldNames(members)
	return publicAccountContractsType
}()

PublicAccountContractsType represents the type `PublicAccount.Contracts`

View Source
var PublicAccountForEachPublicFunctionType = AccountForEachFunctionType(PublicPathType)
View Source
var PublicAccountKeysType = func() *CompositeType {

	accountKeys := &CompositeType{
		Identifier: AccountKeysTypeName,
		Kind:       common.CompositeKindStructure,
		importable: false,
	}

	var members = []*Member{
		NewUnmeteredPublicFunctionMember(
			accountKeys,
			AccountKeysTypeGetFunctionName,
			AccountKeysTypeGetFunctionType,
			accountKeysTypeGetFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			accountKeys,
			AccountKeysTypeForEachFunctionName,
			AccountKeysTypeForEachFunctionType,
			accountKeysTypeForEachFunctionDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			accountKeys,
			AccountKeysTypeCountFieldName,
			AccountKeysTypeCountFieldType,
			accountKeysTypeCountFieldDocString,
		),
	}

	accountKeys.Members = GetMembersAsMap(members)
	accountKeys.Fields = GetFieldNames(members)
	return accountKeys
}()

PublicAccountKeysType represents the keys associated with a public account.

View Source
var PublicAccountPathsType = &VariableSizedType{
	Type: PublicPathType,
}
View Source
var PublicAccountType = func() *CompositeType {

	publicAccountType := &CompositeType{
		Identifier:         PublicAccountTypeName,
		Kind:               common.CompositeKindStructure,
		hasComputedMembers: true,
		importable:         false,
		NestedTypes: func() *StringTypeOrderedMap {
			nestedTypes := &StringTypeOrderedMap{}
			nestedTypes.Set(AccountKeysTypeName, PublicAccountKeysType)
			nestedTypes.Set(PublicAccountContractsTypeName, PublicAccountContractsType)
			return nestedTypes
		}(),
	}

	var members = []*Member{
		NewUnmeteredPublicConstantFieldMember(
			publicAccountType,
			PublicAccountTypeAddressFieldName,
			TheAddressType,
			accountTypeAddressFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			publicAccountType,
			PublicAccountTypeBalanceFieldName,
			UFix64Type,
			accountTypeAccountBalanceFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			publicAccountType,
			PublicAccountTypeAvailableBalanceFieldName,
			UFix64Type,
			accountTypeAccountAvailableBalanceFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			publicAccountType,
			PublicAccountTypeStorageUsedFieldName,
			UInt64Type,
			accountTypeStorageUsedFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			publicAccountType,
			PublicAccountTypeStorageCapacityFieldName,
			UInt64Type,
			accountTypeStorageCapacityFieldDocString,
		),
		NewUnmeteredPublicFunctionMember(
			publicAccountType,
			PublicAccountTypeGetCapabilityFieldName,
			PublicAccountTypeGetCapabilityFunctionType,
			publicAccountTypeGetLinkTargetFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			publicAccountType,
			PublicAccountTypeGetTargetLinkFieldName,
			AccountTypeGetLinkTargetFunctionType,
			accountTypeGetLinkTargetFunctionDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			publicAccountType,
			PublicAccountTypeKeysFieldName,
			PublicAccountKeysType,
			accountTypeKeysFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			publicAccountType,
			PublicAccountTypeContractsFieldName,
			PublicAccountContractsType,
			accountTypeContractsFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			publicAccountType,
			PublicAccountTypePathsFieldName,
			PublicAccountPathsType,
			publicAccountTypePathsFieldDocString,
		),
		NewUnmeteredPublicFunctionMember(
			publicAccountType,
			PublicAccountTypeForEachPublicFieldName,
			PublicAccountForEachPublicFunctionType,
			publicAccountForEachPublicDocString,
		),
	}

	publicAccountType.Members = GetMembersAsMap(members)
	publicAccountType.Fields = GetFieldNames(members)
	return publicAccountType
}()

PublicAccountType represents the publicly accessible portion of an account.

View Source
var PublicAccountTypeGetCapabilityFunctionType = func() *FunctionType {

	typeParameter := &TypeParameter{
		TypeBound: &ReferenceType{
			Type: AnyType,
		},
		Name:     "T",
		Optional: true,
	}

	return &FunctionType{
		TypeParameters: []*TypeParameter{
			typeParameter,
		},
		Parameters: []Parameter{
			{
				Label:          ArgumentLabelNotRequired,
				Identifier:     "capabilityPath",
				TypeAnnotation: NewTypeAnnotation(PublicPathType),
			},
		},
		ReturnTypeAnnotation: NewTypeAnnotation(
			&CapabilityType{
				BorrowType: &GenericType{
					TypeParameter: typeParameter,
				},
			},
		),
	}
}()
View Source
var PublicKeyArrayType = &VariableSizedType{
	Type: PublicKeyType,
}
View Source
var PublicKeyType = func() *CompositeType {

	publicKeyType := &CompositeType{
		Identifier:         PublicKeyTypeName,
		Kind:               common.CompositeKindStructure,
		hasComputedMembers: true,
		importable:         true,
	}

	var members = []*Member{
		NewUnmeteredPublicConstantFieldMember(
			publicKeyType,
			PublicKeyTypePublicKeyFieldName,
			ByteArrayType,
			publicKeyKeyFieldDocString,
		),
		NewUnmeteredPublicConstantFieldMember(
			publicKeyType,
			PublicKeyTypeSignAlgoFieldName,
			SignatureAlgorithmType,
			publicKeySignAlgoFieldDocString,
		),
		NewUnmeteredPublicFunctionMember(
			publicKeyType,
			PublicKeyTypeVerifyFunctionName,
			PublicKeyVerifyFunctionType,
			publicKeyVerifyFunctionDocString,
		),
		NewUnmeteredPublicFunctionMember(
			publicKeyType,
			PublicKeyTypeVerifyPoPFunctionName,
			PublicKeyVerifyPoPFunctionType,
			publicKeyVerifyPoPFunctionDocString,
		),
	}

	publicKeyType.Members = GetMembersAsMap(members)
	publicKeyType.Fields = GetFieldNames(members)

	return publicKeyType
}()

PublicKeyType represents the public key associated with an account key.

View Source
var PublicKeyVerifyFunctionType = &FunctionType{
	TypeParameters: []*TypeParameter{},
	Parameters: []Parameter{
		{
			Identifier: "signature",
			TypeAnnotation: NewTypeAnnotation(
				ByteArrayType,
			),
		},
		{
			Identifier: "signedData",
			TypeAnnotation: NewTypeAnnotation(
				ByteArrayType,
			),
		},
		{
			Identifier:     "domainSeparationTag",
			TypeAnnotation: NewTypeAnnotation(StringType),
		},
		{
			Identifier:     "hashAlgorithm",
			TypeAnnotation: NewTypeAnnotation(HashAlgorithmType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(BoolType),
}
View Source
var PublicKeyVerifyPoPFunctionType = &FunctionType{
	TypeParameters: []*TypeParameter{},
	Parameters: []Parameter{
		{
			Label:      ArgumentLabelNotRequired,
			Identifier: "proof",
			TypeAnnotation: NewTypeAnnotation(
				ByteArrayType,
			),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(BoolType),
}
View Source
var PublicPathConversionFunctionType = pathConversionFunctionType(PublicPathType)
View Source
var PublicPathType = &SimpleType{
	Name:          "PublicPath",
	QualifiedName: "PublicPath",
	TypeID:        "PublicPath",
	tag:           PublicPathTypeTag,
	IsResource:    false,
	Storable:      true,
	Equatable:     true,
	Exportable:    true,
	Importable:    true,
}

PublicPathType

View Source
var ReferenceTypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier:     "authorized",
			TypeAnnotation: NewTypeAnnotation(BoolType),
		},
		{
			Identifier:     "type",
			TypeAnnotation: NewTypeAnnotation(MetaType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(MetaType),
}
View Source
var RestrictedTypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier: "identifier",
			TypeAnnotation: NewTypeAnnotation(
				&OptionalType{
					Type: StringType,
				},
			),
		},
		{
			Identifier: "restrictions",
			TypeAnnotation: NewTypeAnnotation(
				&VariableSizedType{
					Type: StringType,
				},
			),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		&OptionalType{
			Type: MetaType,
		},
	),
}
View Source
var SignatureAlgorithmType = newNativeEnumType(
	SignatureAlgorithmTypeName,
	UInt8Type,
	nil,
)
View Source
var StorableType = &SimpleType{
	Name:          "Storable",
	QualifiedName: "Storable",
	TypeID:        "Storable",

	IsResource: false,
	Storable:   true,
	Equatable:  false,
	Exportable: false,
	Importable: false,
	IsSuperTypeOf: func(subType Type) bool {
		storableResults := map[*Member]bool{}
		return subType.IsStorable(storableResults)
	},
}

StorableType is the supertype of all types which are storable.

It is only used as e.g. a type bound, but is not accessible to user programs, i.e. can't be used in type annotations for e.g. parameters, return types, fields, etc.

View Source
var StoragePathConversionFunctionType = pathConversionFunctionType(StoragePathType)
View Source
var StoragePathType = &SimpleType{
	Name:          "StoragePath",
	QualifiedName: "StoragePath",
	TypeID:        "StoragePath",
	tag:           StoragePathTypeTag,
	IsResource:    false,
	Storable:      true,
	Equatable:     true,
	Exportable:    true,
	Importable:    true,
}

StoragePathType

View Source
var StringFunctionType = func() *FunctionType {

	typeName := StringType.String()

	if BaseValueActivation.Find(typeName) != nil {
		panic(errors.NewUnreachableError())
	}

	functionType := &FunctionType{
		ReturnTypeAnnotation: NewTypeAnnotation(StringType),
	}

	addMember := func(member *Member) {
		if functionType.Members == nil {
			functionType.Members = &StringMemberOrderedMap{}
		}
		name := member.Identifier.Identifier
		if functionType.Members.Contains(name) {
			panic(errors.NewUnreachableError())
		}
		functionType.Members.Set(name, member)
	}

	addMember(NewUnmeteredPublicFunctionMember(
		functionType,
		StringTypeEncodeHexFunctionName,
		StringTypeEncodeHexFunctionType,
		StringTypeEncodeHexFunctionDocString,
	))

	addMember(NewUnmeteredPublicFunctionMember(
		functionType,
		StringTypeFromUtf8FunctionName,
		StringTypeFromUtf8FunctionType,
		StringTypeFromUtf8FunctionDocString,
	))

	addMember(NewUnmeteredPublicFunctionMember(
		functionType,
		StringTypeFromCharactersFunctionName,
		StringTypeFromCharactersFunctionType,
		StringTypeFromCharactersFunctionDocString,
	))

	BaseValueActivation.Set(
		typeName,
		baseFunctionVariable(
			typeName,
			functionType,
			stringFunctionDocString,
		),
	)

	return functionType
}()
View Source
var StringType = &SimpleType{
	Name:          "String",
	QualifiedName: "String",
	TypeID:        "String",
	tag:           StringTypeTag,
	IsResource:    false,
	Storable:      true,
	Equatable:     true,
	Exportable:    true,
	Importable:    true,
	ValueIndexingInfo: ValueIndexingInfo{
		IsValueIndexableType:          true,
		AllowsValueIndexingAssignment: false,
		ElementType: func(_ bool) Type {
			return CharacterType
		},
		IndexingType: IntegerType,
	},
}

StringType represents the string type

View Source
var StringTypeConcatFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "other",
			TypeAnnotation: NewTypeAnnotation(StringType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		StringType,
	),
}
View Source
var StringTypeDecodeHexFunctionType = &FunctionType{
	ReturnTypeAnnotation: NewTypeAnnotation(ByteArrayType),
}
View Source
var StringTypeEncodeHexFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:      ArgumentLabelNotRequired,
			Identifier: "data",
			TypeAnnotation: NewTypeAnnotation(
				ByteArrayType,
			),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		StringType,
	),
}
View Source
var StringTypeFromCharactersFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:      ArgumentLabelNotRequired,
			Identifier: "characters",
			TypeAnnotation: NewTypeAnnotation(&VariableSizedType{
				Type: CharacterType,
			}),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		StringType,
	),
}
View Source
var StringTypeFromUtf8FunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "bytes",
			TypeAnnotation: NewTypeAnnotation(ByteArrayType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		&OptionalType{
			Type: StringType,
		},
	),
}
View Source
var StringTypeSliceFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Identifier:     "from",
			TypeAnnotation: NewTypeAnnotation(IntType),
		},
		{
			Identifier:     "upTo",
			TypeAnnotation: NewTypeAnnotation(IntType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(
		StringType,
	),
}
View Source
var StringTypeToLowerFunctionType = &FunctionType{
	ReturnTypeAnnotation: NewTypeAnnotation(StringType),
}
View Source
var TheAddressType = &AddressType{}
View Source
var ToStringFunctionType = &FunctionType{
	ReturnTypeAnnotation: NewTypeAnnotation(
		StringType,
	),
}
View Source
var VariableSizedArrayTypeFunctionType = &FunctionType{
	Parameters: []Parameter{
		{
			Label:          ArgumentLabelNotRequired,
			Identifier:     "type",
			TypeAnnotation: NewTypeAnnotation(MetaType),
		},
	},
	ReturnTypeAnnotation: NewTypeAnnotation(MetaType),
}
View Source
var VoidType = &SimpleType{
	Name:          "Void",
	QualifiedName: "Void",
	TypeID:        "Void",
	tag:           VoidTypeTag,
	IsResource:    false,
	Storable:      false,
	Equatable:     true,
	Exportable:    true,
	Importable:    false,
}

VoidType represents the void type

View Source
var VoidTypeAnnotation = NewTypeAnnotation(VoidType)

Functions

func AreCompatibleEquatableTypes

func AreCompatibleEquatableTypes(leftType, rightType Type) bool

func CheckAddressLiteral added in v0.12.0

func CheckAddressLiteral(memoryGauge common.MemoryGauge, expression *ast.IntegerExpression, report func(error)) bool

CheckAddressLiteral checks that the value of the integer literal fits into the range of an address (64 bits), and is hexadecimal

func CheckFixedPointLiteral added in v0.12.0

func CheckFixedPointLiteral(
	memoryGauge common.MemoryGauge,
	expression *ast.FixedPointExpression,
	targetType Type,
	report func(error),
) bool

CheckFixedPointLiteral checks that the value of the fixed-point literal fits into range of the target fixed-point type

func CheckIntegerLiteral added in v0.12.0

func CheckIntegerLiteral(memoryGauge common.MemoryGauge, expression *ast.IntegerExpression, targetType Type, report func(error)) bool

CheckIntegerLiteral checks that the value of the integer literal fits into range of the target integer type

func ErrorMessageExpectedActualTypes added in v0.30.0

func ErrorMessageExpectedActualTypes(
	expectedType Type,
	actualType Type,
) (
	expected string,
	actual string,
)

func FailableCastCanSucceed

func FailableCastCanSucceed(subType, superType Type) bool

FailableCastCanSucceed checks a failable (dynamic) cast, i.e. a cast that might succeed at run-time. It returns true if the cast from subType to superType could potentially succeed at run-time, and returns false if the cast will definitely always fail.

func FromStringFunctionDocstring added in v0.28.0

func FromStringFunctionDocstring(ty Type) string

func FunctionEntryPointDeclaration added in v0.11.0

func FunctionEntryPointDeclaration(program *ast.Program) *ast.FunctionDeclaration

FunctionEntryPointDeclaration returns the entry point function declaration, if any.

Returns nil if there are multiple function declarations with the same function entry point name, or a transaction declaration.

func GetFieldNames added in v0.27.0

func GetFieldNames(members []*Member) []string

func IsNilType

func IsNilType(ty Type) bool

IsNilType returns true if the given type is the type of `nil`, i.e. `Never?`.

func IsProperSubType added in v0.17.0

func IsProperSubType(subType Type, superType Type) bool

IsProperSubType is similar to IsSubType, i.e. it determines if the given subtype is a subtype of the given supertype, but returns false if the subtype and supertype refer to the same type.

func IsSameTypeKind added in v0.24.0

func IsSameTypeKind(subType Type, superType Type) bool

IsSameTypeKind determines if the given subtype belongs to the same kind as the supertype.

e.g: 'Never' type is a subtype of 'Integer', but not of the same kind as 'Integer'. Whereas, 'Int8' is both a subtype and also of same kind as 'Integer'.

func IsSubType

func IsSubType(subType Type, superType Type) bool

IsSubType determines if the given subtype is a subtype of the given supertype.

Types are subtypes of themselves.

NOTE: This method can be used to check the assignability of `subType` to `superType`. However, to check if a type *strictly* belongs to a certain category, then consider using `IsSameTypeKind` method. e.g: "Is type `T` an Integer type?". Using this method for the later use-case may produce incorrect results.

The differences between these methods is as follows:

  • IsSubType():

    To check the assignability, e.g: is argument type T is a sub-type of parameter type R? This is the more frequent use-case.

  • IsSameTypeKind():

    To check if a type strictly belongs to a certain category. e.g: Is the expression type T is any of the integer types, but nothing else. Another way to check is, asking the question of "if the subType is Never, should the check still pass?". A common code-smell for potential incorrect usage is, using IsSubType() method with a constant/pre-defined superType. e.g: IsSubType(<<someType>>, FixedPointType)

func IsValidAssignmentTargetExpression added in v0.8.0

func IsValidAssignmentTargetExpression(expression ast.Expression) bool

func IsValidCharacter added in v0.24.0

func IsValidCharacter(s string) bool

func IsValidDictionaryKeyType

func IsValidDictionaryKeyType(keyType Type) bool

func IsValidEventParameterType added in v0.5.0

func IsValidEventParameterType(t Type, results map[*Member]bool) bool

IsValidEventParameterType returns true if the given type is a valid event parameter type.

Events currently only support a few simple Cadence types.

func RequiredArgumentCount added in v0.10.0

func RequiredArgumentCount(count int) *int

func VisitThisAndNested added in v0.13.2

func VisitThisAndNested(t Type, visit func(ty Type))

Types

type AccessCheckMode

type AccessCheckMode uint
const (
	// AccessCheckModeDefault indicates the default access check mode should be used.
	AccessCheckModeDefault AccessCheckMode = iota
	// AccessCheckModeStrict indicates that access modifiers are required
	// and access checks are always enforced.
	AccessCheckModeStrict
	// AccessCheckModeNotSpecifiedRestricted indicates modifiers are optional.
	// Access is assumed private if not specified
	AccessCheckModeNotSpecifiedRestricted
	// AccessCheckModeNotSpecifiedUnrestricted indicates access modifiers are optional.
	// Access is assumed public if not specified
	AccessCheckModeNotSpecifiedUnrestricted
	// AccessCheckModeNone indicates access modifiers are optional and ignored.
	AccessCheckModeNone
)

func (AccessCheckMode) String

func (i AccessCheckMode) String() string

type AddressContractNamesResolver added in v0.25.0

type AddressContractNamesResolver func(address common.Address) ([]string, error)

type AddressType

type AddressType struct {
	// contains filtered or unexported fields
}

AddressType represents the address type

func (*AddressType) Equal

func (*AddressType) Equal(other Type) bool

func (*AddressType) GetMembers added in v0.7.0

func (t *AddressType) GetMembers() map[string]MemberResolver

func (*AddressType) ID

func (*AddressType) ID() TypeID

func (*AddressType) IsEquatable added in v0.7.0

func (*AddressType) IsEquatable() bool

func (*AddressType) IsExportable added in v0.30.0

func (*AddressType) IsExportable(_ map[*Member]bool) bool

func (*AddressType) IsImportable added in v0.17.0

func (t *AddressType) IsImportable(_ map[*Member]bool) bool

func (*AddressType) IsInvalidType

func (*AddressType) IsInvalidType() bool

func (*AddressType) IsResourceType

func (*AddressType) IsResourceType() bool

func (*AddressType) IsStorable added in v0.5.0

func (*AddressType) IsStorable(_ map[*Member]bool) bool

func (*AddressType) IsSuperType added in v0.24.0

func (*AddressType) IsSuperType() bool

func (*AddressType) IsType

func (*AddressType) IsType()

func (*AddressType) MaxInt

func (*AddressType) MaxInt() *big.Int

func (*AddressType) MinInt

func (*AddressType) MinInt() *big.Int

func (*AddressType) QualifiedString

func (*AddressType) QualifiedString() string

func (*AddressType) Resolve

func (*AddressType) RewriteWithRestrictedTypes added in v0.8.0

func (t *AddressType) RewriteWithRestrictedTypes() (Type, bool)

func (*AddressType) String

func (*AddressType) String() string

func (*AddressType) Tag added in v0.24.0

func (t *AddressType) Tag() TypeTag

func (*AddressType) TypeAnnotationState

func (*AddressType) TypeAnnotationState() TypeAnnotationState

func (*AddressType) Unify

func (*AddressType) Unify(_ Type, _ *TypeParameterTypeOrderedMap, _ func(err error), _ ast.Range) bool

type AlwaysFailingNonResourceCastingTypeError

type AlwaysFailingNonResourceCastingTypeError struct {
	ValueType  Type
	TargetType Type
	ast.Range
}

func (*AlwaysFailingNonResourceCastingTypeError) Error

func (*AlwaysFailingNonResourceCastingTypeError) IsUserError added in v0.25.0

type AlwaysFailingResourceCastingTypeError

type AlwaysFailingResourceCastingTypeError struct {
	ValueType  Type
	TargetType Type
	ast.Range
}

func (*AlwaysFailingResourceCastingTypeError) Error

func (*AlwaysFailingResourceCastingTypeError) IsUserError added in v0.25.0

type AmbiguousRestrictedTypeError

type AmbiguousRestrictedTypeError struct {
	ast.Range
}

func (*AmbiguousRestrictedTypeError) Error

func (*AmbiguousRestrictedTypeError) IsUserError added in v0.25.0

func (*AmbiguousRestrictedTypeError) IsUserError()

type ArgumentCountError

type ArgumentCountError struct {
	ParameterCount int
	ArgumentCount  int
	ast.Range
}

func (*ArgumentCountError) Error

func (e *ArgumentCountError) Error() string

func (*ArgumentCountError) IsUserError added in v0.25.0

func (*ArgumentCountError) IsUserError()

func (*ArgumentCountError) SecondaryError

func (e *ArgumentCountError) SecondaryError() string

type ArgumentExpressionsCheck added in v0.9.0

type ArgumentExpressionsCheck func(
	checker *Checker,
	argumentExpressions []ast.Expression,
	invocationRange ast.Range,
)

type ArrayExpressionTypes added in v0.26.0

type ArrayExpressionTypes struct {
	ArrayType     ArrayType
	ArgumentTypes []Type
}

type ArrayType

type ArrayType interface {
	ValueIndexableType
	// contains filtered or unexported methods
}

type AssignmentStatementTypes added in v0.26.0

type AssignmentStatementTypes struct {
	ValueType  Type
	TargetType Type
}

type AssignmentToConstantError

type AssignmentToConstantError struct {
	Name string
	ast.Range
}

func (*AssignmentToConstantError) Error

func (e *AssignmentToConstantError) Error() string

func (*AssignmentToConstantError) IsUserError added in v0.25.0

func (*AssignmentToConstantError) IsUserError()

func (*AssignmentToConstantError) SecondaryError added in v0.31.0

func (e *AssignmentToConstantError) SecondaryError() string

type AssignmentToConstantMemberError

type AssignmentToConstantMemberError struct {
	Name string
	ast.Range
}

func (*AssignmentToConstantMemberError) Error

func (*AssignmentToConstantMemberError) IsUserError added in v0.25.0

func (*AssignmentToConstantMemberError) IsUserError()

type BeforeExtractor

type BeforeExtractor struct {
	ExpressionExtractor *ast.ExpressionExtractor
	// contains filtered or unexported fields
}

func NewBeforeExtractor

func NewBeforeExtractor(memoryGauge common.MemoryGauge, report func(error)) *BeforeExtractor

func (*BeforeExtractor) ExtractBefore

func (e *BeforeExtractor) ExtractBefore(expression ast.Expression) ast.ExpressionExtraction

func (*BeforeExtractor) ExtractFunction

func (e *BeforeExtractor) ExtractFunction(
	_ *ast.ExpressionExtractor,
	expression *ast.FunctionExpression,
) ast.ExpressionExtraction

func (*BeforeExtractor) ExtractInvocation

func (e *BeforeExtractor) ExtractInvocation(
	extractor *ast.ExpressionExtractor,
	expression *ast.InvocationExpression,
) ast.ExpressionExtraction

type BinaryExpressionTypes added in v0.26.0

type BinaryExpressionTypes struct {
	ResultType Type
	LeftType   Type
	RightType  Type
}

type BinaryOperationKind

type BinaryOperationKind uint
const (
	BinaryOperationKindUnknown BinaryOperationKind = iota
	BinaryOperationKindArithmetic
	BinaryOperationKindNonEqualityComparison
	BinaryOperationKindBooleanLogic
	BinaryOperationKindEquality
	BinaryOperationKindNilCoalescing
	BinaryOperationKindBitwise
)

func (BinaryOperationKind) String

func (i BinaryOperationKind) String() string

type CapabilityType

type CapabilityType struct {
	BorrowType Type
	// contains filtered or unexported fields
}

func NewCapabilityType added in v0.24.0

func NewCapabilityType(memoryGauge common.MemoryGauge, borrowType Type) *CapabilityType

func (*CapabilityType) BaseType added in v0.5.0

func (t *CapabilityType) BaseType() Type

func (*CapabilityType) Equal

func (t *CapabilityType) Equal(other Type) bool

func (*CapabilityType) GetMembers added in v0.7.0

func (t *CapabilityType) GetMembers() map[string]MemberResolver

func (*CapabilityType) ID

func (t *CapabilityType) ID() TypeID

func (*CapabilityType) Instantiate added in v0.5.0

func (t *CapabilityType) Instantiate(typeArguments []Type, _ func(err error)) Type

func (*CapabilityType) IsEquatable added in v0.7.0

func (*CapabilityType) IsEquatable() bool

func (*CapabilityType) IsExportable added in v0.30.0

func (*CapabilityType) IsExportable(_ map[*Member]bool) bool

func (*CapabilityType) IsImportable added in v0.17.0

func (t *CapabilityType) IsImportable(_ map[*Member]bool) bool

func (*CapabilityType) IsInvalidType

func (t *CapabilityType) IsInvalidType() bool

func (*CapabilityType) IsResourceType

func (*CapabilityType) IsResourceType() bool

func (*CapabilityType) IsStorable added in v0.5.0

func (*CapabilityType) IsStorable(_ map[*Member]bool) bool

func (*CapabilityType) IsType

func (*CapabilityType) IsType()

func (*CapabilityType) QualifiedString

func (t *CapabilityType) QualifiedString() string

func (*CapabilityType) Resolve

func (t *CapabilityType) Resolve(typeArguments *TypeParameterTypeOrderedMap) Type

func (*CapabilityType) RewriteWithRestrictedTypes added in v0.8.0

func (t *CapabilityType) RewriteWithRestrictedTypes() (Type, bool)

func (*CapabilityType) String

func (t *CapabilityType) String() string

func (*CapabilityType) Tag added in v0.24.0

func (t *CapabilityType) Tag() TypeTag

func (*CapabilityType) TypeAnnotationState

func (t *CapabilityType) TypeAnnotationState() TypeAnnotationState

func (*CapabilityType) TypeArguments added in v0.5.0

func (t *CapabilityType) TypeArguments() []Type

func (*CapabilityType) TypeParameters added in v0.5.0

func (t *CapabilityType) TypeParameters() []*TypeParameter

func (*CapabilityType) Unify

func (t *CapabilityType) Unify(
	other Type,
	typeParameters *TypeParameterTypeOrderedMap,
	report func(err error),
	outerRange ast.Range,
) bool

type CastTypes added in v0.26.0

type CastTypes struct {
	ExprActualType Type
	TargetType     Type
	ExpectedType   Type
}

type CastingExpressionTypes added in v0.30.0

type CastingExpressionTypes struct {
	StaticValueType Type
	TargetType      Type
}

type CheckHandlerFunc added in v0.2.1

type CheckHandlerFunc func(checker *Checker, check func())

type Checker

type Checker struct {
	Location common.Location

	Program      *ast.Program
	PositionInfo *PositionInfo
	Config       *Config
	Elaboration  *Elaboration
	// contains filtered or unexported fields
}

func NewChecker

func NewChecker(
	program *ast.Program,
	location common.Location,
	memoryGauge common.MemoryGauge,
	config *Config,
) (*Checker, error)

func (*Checker) Check

func (checker *Checker) Check() error

func (*Checker) CheckProgram added in v0.27.0

func (checker *Checker) CheckProgram(program *ast.Program)

func (*Checker) CheckStatement added in v0.27.0

func (checker *Checker) CheckStatement(element ast.Statement)

func (*Checker) CheckerError

func (checker *Checker) CheckerError() *CheckerError

func (*Checker) ConvertType

func (checker *Checker) ConvertType(t ast.Type) Type

ConvertType converts an AST type representation to a sema type

func (*Checker) ConvertTypeAnnotation

func (checker *Checker) ConvertTypeAnnotation(typeAnnotation *ast.TypeAnnotation) TypeAnnotation

ConvertTypeAnnotation converts an AST type annotation representation to a sema type annotation

NOTE: type annotations are *NOT* checked!

func (*Checker) EntryPointParameters added in v0.11.0

func (checker *Checker) EntryPointParameters() []Parameter

EntryPointParameters returns the parameters of the transaction or script, if any.

Returns nil if the program specifies both a valid transaction and entry point function declaration.

func (*Checker) IsChecked

func (checker *Checker) IsChecked() bool

func (*Checker) ResetErrors

func (checker *Checker) ResetErrors()

func (*Checker) SetMemoryGauge added in v0.24.0

func (checker *Checker) SetMemoryGauge(gauge common.MemoryGauge)

func (*Checker) SubChecker added in v0.13.0

func (checker *Checker) SubChecker(program *ast.Program, location common.Location) (*Checker, error)

func (*Checker) TypeActivationDepth added in v0.2.0

func (checker *Checker) TypeActivationDepth() int

func (*Checker) ValueActivationDepth added in v0.2.0

func (checker *Checker) ValueActivationDepth() int

func (*Checker) VisitArrayExpression

func (checker *Checker) VisitArrayExpression(expression *ast.ArrayExpression) Type

func (*Checker) VisitAssignmentStatement

func (checker *Checker) VisitAssignmentStatement(assignment *ast.AssignmentStatement) (_ struct{})

func (*Checker) VisitBinaryExpression

func (checker *Checker) VisitBinaryExpression(expression *ast.BinaryExpression) Type

func (*Checker) VisitBoolExpression

func (checker *Checker) VisitBoolExpression(_ *ast.BoolExpression) Type

func (*Checker) VisitBreakStatement

func (checker *Checker) VisitBreakStatement(statement *ast.BreakStatement) (_ struct{})

func (*Checker) VisitCastingExpression

func (checker *Checker) VisitCastingExpression(expression *ast.CastingExpression) Type

func (*Checker) VisitCompositeDeclaration

func (checker *Checker) VisitCompositeDeclaration(declaration *ast.CompositeDeclaration) (_ struct{})

func (*Checker) VisitConditionalExpression

func (checker *Checker) VisitConditionalExpression(expression *ast.ConditionalExpression) Type

func (*Checker) VisitContinueStatement

func (checker *Checker) VisitContinueStatement(statement *ast.ContinueStatement) (_ struct{})

func (*Checker) VisitCreateExpression

func (checker *Checker) VisitCreateExpression(expression *ast.CreateExpression) Type

func (*Checker) VisitDestroyExpression

func (checker *Checker) VisitDestroyExpression(expression *ast.DestroyExpression) (resultType Type)

func (*Checker) VisitDictionaryExpression

func (checker *Checker) VisitDictionaryExpression(expression *ast.DictionaryExpression) Type

func (*Checker) VisitEmitStatement

func (checker *Checker) VisitEmitStatement(statement *ast.EmitStatement) (_ struct{})

func (*Checker) VisitEnumCaseDeclaration added in v0.10.0

func (checker *Checker) VisitEnumCaseDeclaration(_ *ast.EnumCaseDeclaration) struct{}

func (*Checker) VisitExpression added in v0.16.0

func (checker *Checker) VisitExpression(expr ast.Expression, expectedType Type) Type

func (*Checker) VisitExpressionStatement

func (checker *Checker) VisitExpressionStatement(statement *ast.ExpressionStatement) (_ struct{})

func (*Checker) VisitExpressionWithForceType added in v0.16.0

func (checker *Checker) VisitExpressionWithForceType(expr ast.Expression, expectedType Type, forceType bool) Type

func (*Checker) VisitFieldDeclaration

func (checker *Checker) VisitFieldDeclaration(_ *ast.FieldDeclaration) struct{}

func (*Checker) VisitFixedPointExpression

func (checker *Checker) VisitFixedPointExpression(expression *ast.FixedPointExpression) Type

func (*Checker) VisitForStatement

func (checker *Checker) VisitForStatement(statement *ast.ForStatement) (_ struct{})

func (*Checker) VisitForceExpression

func (checker *Checker) VisitForceExpression(expression *ast.ForceExpression) Type

func (*Checker) VisitFunctionDeclaration

func (checker *Checker) VisitFunctionDeclaration(declaration *ast.FunctionDeclaration) (_ struct{})

func (*Checker) VisitFunctionExpression

func (checker *Checker) VisitFunctionExpression(expression *ast.FunctionExpression) Type

func (*Checker) VisitIdentifierExpression

func (checker *Checker) VisitIdentifierExpression(expression *ast.IdentifierExpression) Type

func (*Checker) VisitIfStatement

func (checker *Checker) VisitIfStatement(statement *ast.IfStatement) (_ struct{})

func (*Checker) VisitImportDeclaration

func (checker *Checker) VisitImportDeclaration(declaration *ast.ImportDeclaration) struct{}

func (*Checker) VisitIndexExpression

func (checker *Checker) VisitIndexExpression(expression *ast.IndexExpression) Type

func (*Checker) VisitIntegerExpression

func (checker *Checker) VisitIntegerExpression(expression *ast.IntegerExpression) Type

func (*Checker) VisitInterfaceDeclaration

func (checker *Checker) VisitInterfaceDeclaration(declaration *ast.InterfaceDeclaration) (_ struct{})

VisitInterfaceDeclaration checks the given interface declaration.

NOTE: This function assumes that the interface type was previously declared using `declareInterfaceType` and exists in `checker.Elaboration.InterfaceDeclarationTypes`, and that the members and nested declarations for the interface type were declared through `declareInterfaceMembers`.

func (*Checker) VisitInvocationExpression

func (checker *Checker) VisitInvocationExpression(invocationExpression *ast.InvocationExpression) Type

func (*Checker) VisitMemberExpression

func (checker *Checker) VisitMemberExpression(expression *ast.MemberExpression) Type

NOTE: only called if the member expression is *not* an assignment

func (*Checker) VisitNilExpression

func (checker *Checker) VisitNilExpression(_ *ast.NilExpression) Type

func (*Checker) VisitPathExpression

func (checker *Checker) VisitPathExpression(expression *ast.PathExpression) Type

func (*Checker) VisitPragmaDeclaration added in v0.7.0

func (checker *Checker) VisitPragmaDeclaration(p *ast.PragmaDeclaration) (_ struct{})

func (*Checker) VisitReferenceExpression

func (checker *Checker) VisitReferenceExpression(referenceExpression *ast.ReferenceExpression) Type

VisitReferenceExpression checks a reference expression `&t as T`, where `t` is the referenced expression, and `T` is the result type.

func (*Checker) VisitReturnStatement

func (checker *Checker) VisitReturnStatement(statement *ast.ReturnStatement) (_ struct{})

func (*Checker) VisitSpecialFunctionDeclaration added in v0.25.0

func (checker *Checker) VisitSpecialFunctionDeclaration(declaration *ast.SpecialFunctionDeclaration) struct{}

func (*Checker) VisitStringExpression

func (checker *Checker) VisitStringExpression(expression *ast.StringExpression) Type

func (*Checker) VisitSwapStatement

func (checker *Checker) VisitSwapStatement(swap *ast.SwapStatement) (_ struct{})

func (*Checker) VisitSwitchStatement added in v0.10.0

func (checker *Checker) VisitSwitchStatement(statement *ast.SwitchStatement) (_ struct{})

func (*Checker) VisitTransactionDeclaration

func (checker *Checker) VisitTransactionDeclaration(declaration *ast.TransactionDeclaration) (_ struct{})

func (*Checker) VisitUnaryExpression

func (checker *Checker) VisitUnaryExpression(expression *ast.UnaryExpression) Type

func (*Checker) VisitVariableDeclaration

func (checker *Checker) VisitVariableDeclaration(declaration *ast.VariableDeclaration) (_ struct{})

func (*Checker) VisitVoidExpression added in v0.27.1

func (checker *Checker) VisitVoidExpression(_ *ast.VoidExpression) Type

func (*Checker) VisitWhileStatement

func (checker *Checker) VisitWhileStatement(statement *ast.WhileStatement) (_ struct{})

type CheckerError

type CheckerError struct {
	Location common.Location
	Codes    map[common.Location][]byte
	Errors   []error
}

func (CheckerError) ChildErrors

func (e CheckerError) ChildErrors() []error

func (CheckerError) Error

func (e CheckerError) Error() string

func (CheckerError) ImportLocation added in v0.12.1

func (e CheckerError) ImportLocation() common.Location

func (CheckerError) IsUserError added in v0.25.0

func (CheckerError) IsUserError()

type CompositeKindMismatchError

type CompositeKindMismatchError struct {
	ExpectedKind common.CompositeKind
	ActualKind   common.CompositeKind
	ast.Range
}

func (*CompositeKindMismatchError) Error

func (*CompositeKindMismatchError) IsUserError added in v0.25.0

func (*CompositeKindMismatchError) IsUserError()

func (*CompositeKindMismatchError) SecondaryError

func (e *CompositeKindMismatchError) SecondaryError() string

type CompositeKindedType

type CompositeKindedType interface {
	Type
	GetCompositeKind() common.CompositeKind
}

CompositeKindedType is a type which has a composite kind

type CompositeType

type CompositeType struct {
	Location    common.Location
	EnumRawType Type

	NestedTypes *StringTypeOrderedMap

	Members *StringMemberOrderedMap

	Identifier                          string
	Fields                              []string
	ConstructorParameters               []Parameter
	ImplicitTypeRequirementConformances []*CompositeType
	ExplicitInterfaceConformances       []*InterfaceType
	Kind                                common.CompositeKind
	// contains filtered or unexported fields
}

func (*CompositeType) Equal

func (t *CompositeType) Equal(other Type) bool

func (*CompositeType) ExplicitInterfaceConformanceSet added in v0.3.0

func (t *CompositeType) ExplicitInterfaceConformanceSet() *InterfaceSet

func (*CompositeType) FieldPosition added in v0.21.3

func (t *CompositeType) FieldPosition(name string, declaration *ast.CompositeDeclaration) ast.Position

func (*CompositeType) GetCompositeKind

func (t *CompositeType) GetCompositeKind() common.CompositeKind

func (*CompositeType) GetContainerType

func (t *CompositeType) GetContainerType() Type

func (*CompositeType) GetLocation

func (t *CompositeType) GetLocation() common.Location

func (*CompositeType) GetMembers added in v0.7.0

func (t *CompositeType) GetMembers() map[string]MemberResolver

func (*CompositeType) GetNestedTypes added in v0.13.2

func (t *CompositeType) GetNestedTypes() *StringTypeOrderedMap

func (*CompositeType) ID

func (t *CompositeType) ID() TypeID

func (*CompositeType) InterfaceType

func (t *CompositeType) InterfaceType() *InterfaceType

func (*CompositeType) IsContainerType added in v0.20.3

func (t *CompositeType) IsContainerType() bool

func (*CompositeType) IsEquatable added in v0.7.0

func (t *CompositeType) IsEquatable() bool

func (*CompositeType) IsExportable added in v0.30.0

func (t *CompositeType) IsExportable(results map[*Member]bool) bool

func (*CompositeType) IsImportable added in v0.17.0

func (t *CompositeType) IsImportable(results map[*Member]bool) bool

func (*CompositeType) IsInvalidType

func (*CompositeType) IsInvalidType() bool

func (*CompositeType) IsResourceType

func (t *CompositeType) IsResourceType() bool

func (*CompositeType) IsStorable added in v0.5.0

func (t *CompositeType) IsStorable(results map[*Member]bool) bool

func (*CompositeType) IsType

func (*CompositeType) IsType()

func (*CompositeType) QualifiedIdentifier

func (t *CompositeType) QualifiedIdentifier() string

func (*CompositeType) QualifiedString

func (t *CompositeType) QualifiedString() string

func (*CompositeType) Resolve

func (*CompositeType) RewriteWithRestrictedTypes added in v0.8.0

func (t *CompositeType) RewriteWithRestrictedTypes() (result Type, rewritten bool)

func (*CompositeType) SetContainerType added in v0.17.0

func (t *CompositeType) SetContainerType(containerType Type)

func (*CompositeType) String

func (t *CompositeType) String() string

func (*CompositeType) Tag added in v0.24.0

func (t *CompositeType) Tag() TypeTag

func (*CompositeType) TypeAnnotationState

func (*CompositeType) TypeAnnotationState() TypeAnnotationState

func (*CompositeType) TypeRequirements

func (t *CompositeType) TypeRequirements() []*CompositeType

func (*CompositeType) Unify

func (*CompositeType) Unify(_ Type, _ *TypeParameterTypeOrderedMap, _ func(err error), _ ast.Range) bool

type Config added in v0.26.0

type Config struct {
	// ContractValueHandler is used to construct the contract variable
	ContractValueHandler ContractValueHandlerFunc
	// MemberAccountAccessHandler is used to determine if the access of a member with account access modifier is valid
	MemberAccountAccessHandler MemberAccountAccessHandlerFunc
	// ValidTopLevelDeclarationsHandler is used to determine the kinds of declarations
	// which are valid at the top-level for a given location
	ValidTopLevelDeclarationsHandler ValidTopLevelDeclarationsHandlerFunc
	BaseTypeActivation               *VariableActivation
	// ImportHandler is used to resolve unresolved imports
	ImportHandler       ImportHandlerFunc
	BaseValueActivation *VariableActivation
	// CheckHandler is the function which is used for the checking of a program
	CheckHandler CheckHandlerFunc
	// LocationHandler is used to resolve locations
	LocationHandler LocationHandlerFunc
	// AccessCheckMode is the mode for access control checks.
	// It determines how access modifiers how existing and missing acess modifiers are treated
	AccessCheckMode AccessCheckMode
	// ExtendedElaborationEnabled determines if extended elaboration information is generated
	ExtendedElaborationEnabled bool
	// SuggestionsEnabled determines if additional, potentially-computationally intensive,
	// suggested fixes are calculated when producing type errors
	SuggestionsEnabled bool
	// ErrorShortCircuitingEnabled determines if error short-circuiting is enabled.
	// When enabled, the checker will stop running once it encounters an error.
	// When disabled (the default), the checker reports the error then continues checking
	ErrorShortCircuitingEnabled bool
	// PositionInfoEnabled determines if position information is generated.
	// Position info includes origins, occurrences, member accesses, ranges, and function invocations
	PositionInfoEnabled bool
	// AllowNativeDeclarations determines if declarations may be native
	AllowNativeDeclarations bool
	// AllowStaticDeclarations determines if declarations may be static
	AllowStaticDeclarations bool
	// AccountLinkingEnabled determines if account linking is enabled
	AccountLinkingEnabled bool
}

type ConformanceError

type ConformanceError struct {
	CompositeDeclaration           *ast.CompositeDeclaration
	CompositeType                  *CompositeType
	InterfaceType                  *InterfaceType
	InitializerMismatch            *InitializerMismatch
	MissingMembers                 []*Member
	MemberMismatches               []MemberMismatch
	MissingNestedCompositeTypes    []*CompositeType
	Pos                            ast.Position
	InterfaceTypeIsTypeRequirement bool
}

func (*ConformanceError) EndPosition

func (*ConformanceError) Error

func (e *ConformanceError) Error() string

func (*ConformanceError) ErrorNotes added in v0.2.0

func (e *ConformanceError) ErrorNotes() (notes []errors.ErrorNote)

func (*ConformanceError) IsUserError added in v0.25.0

func (*ConformanceError) IsUserError()

func (*ConformanceError) SecondaryError added in v0.30.0

func (e *ConformanceError) SecondaryError() string

func (*ConformanceError) StartPosition

func (e *ConformanceError) StartPosition() ast.Position

type ConstantSizedArrayLiteralSizeError

type ConstantSizedArrayLiteralSizeError struct {
	ActualSize   int64
	ExpectedSize int64
	ast.Range
}

func (*ConstantSizedArrayLiteralSizeError) Error

func (*ConstantSizedArrayLiteralSizeError) IsUserError added in v0.25.0

func (*ConstantSizedArrayLiteralSizeError) IsUserError()

func (*ConstantSizedArrayLiteralSizeError) SecondaryError

func (e *ConstantSizedArrayLiteralSizeError) SecondaryError() string

type ConstantSizedType

type ConstantSizedType struct {
	Type Type

	Size int64
	// contains filtered or unexported fields
}

ConstantSizedType is a constant sized array type

func NewConstantSizedType added in v0.24.0

func NewConstantSizedType(memoryGauge common.MemoryGauge, typ Type, size int64) *ConstantSizedType

func (*ConstantSizedType) AllowsValueIndexingAssignment added in v0.7.0

func (*ConstantSizedType) AllowsValueIndexingAssignment() bool

func (*ConstantSizedType) ElementType

func (t *ConstantSizedType) ElementType(_ bool) Type

func (*ConstantSizedType) Equal

func (t *ConstantSizedType) Equal(other Type) bool

func (*ConstantSizedType) GetMembers added in v0.7.0

func (t *ConstantSizedType) GetMembers() map[string]MemberResolver

func (*ConstantSizedType) ID

func (t *ConstantSizedType) ID() TypeID

func (*ConstantSizedType) IndexingType

func (t *ConstantSizedType) IndexingType() Type

func (*ConstantSizedType) IsEquatable added in v0.7.0

func (t *ConstantSizedType) IsEquatable() bool

func (*ConstantSizedType) IsExportable added in v0.30.0

func (t *ConstantSizedType) IsExportable(results map[*Member]bool) bool

func (*ConstantSizedType) IsImportable added in v0.17.0

func (t *ConstantSizedType) IsImportable(results map[*Member]bool) bool

func (*ConstantSizedType) IsInvalidType

func (t *ConstantSizedType) IsInvalidType() bool

func (*ConstantSizedType) IsResourceType

func (t *ConstantSizedType) IsResourceType() bool

func (*ConstantSizedType) IsStorable added in v0.5.0

func (t *ConstantSizedType) IsStorable(results map[*Member]bool) bool

func (*ConstantSizedType) IsType

func (*ConstantSizedType) IsType()

func (*ConstantSizedType) QualifiedString

func (t *ConstantSizedType) QualifiedString() string

func (*ConstantSizedType) Resolve

func (t *ConstantSizedType) Resolve(typeArguments *TypeParameterTypeOrderedMap) Type

func (*ConstantSizedType) RewriteWithRestrictedTypes added in v0.8.0

func (t *ConstantSizedType) RewriteWithRestrictedTypes() (Type, bool)

func (*ConstantSizedType) String

func (t *ConstantSizedType) String() string

func (*ConstantSizedType) Tag added in v0.24.0

func (t *ConstantSizedType) Tag() TypeTag

func (*ConstantSizedType) TypeAnnotationState

func (t *ConstantSizedType) TypeAnnotationState() TypeAnnotationState

func (*ConstantSizedType) Unify

func (t *ConstantSizedType) Unify(
	other Type,
	typeParameters *TypeParameterTypeOrderedMap,
	report func(err error),
	outerRange ast.Range,
) bool

type ContainedType

type ContainedType interface {
	Type
	GetContainerType() Type
	SetContainerType(containerType Type)
}

ContainedType is a type which might have a container type

type ContainerKind

type ContainerKind uint
const (
	ContainerKindUnknown ContainerKind = iota
	ContainerKindInterface
	ContainerKindComposite
)

func (ContainerKind) String

func (i ContainerKind) String() string

type ContainerType

type ContainerType interface {
	Type
	IsContainerType() bool
	GetNestedTypes() *StringTypeOrderedMap
}

ContainerType is a type which might have nested types

type ContractValueHandlerFunc added in v0.27.0

type ContractValueHandlerFunc func(
	checker *Checker,
	declaration *ast.CompositeDeclaration,
	compositeType *CompositeType,
) ValueDeclaration

type ControlStatementError

type ControlStatementError struct {
	ControlStatement common.ControlStatement
	ast.Range
}

func (*ControlStatementError) Error

func (e *ControlStatementError) Error() string

func (*ControlStatementError) IsUserError added in v0.25.0

func (*ControlStatementError) IsUserError()

func (*ControlStatementError) SecondaryError added in v0.31.0

func (e *ControlStatementError) SecondaryError() string

type CryptoAlgorithm added in v0.14.4

type CryptoAlgorithm interface {
	RawValue() uint8
	Name() string
	DocString() string
}

type CyclicImportsError added in v0.10.0

type CyclicImportsError struct {
	Location common.Location
	ast.Range
}

func (*CyclicImportsError) Error added in v0.10.0

func (e *CyclicImportsError) Error() string

func (*CyclicImportsError) IsUserError added in v0.25.0

func (*CyclicImportsError) IsUserError()

type DeclarationKindMismatchError

type DeclarationKindMismatchError struct {
	ExpectedDeclarationKind common.DeclarationKind
	ActualDeclarationKind   common.DeclarationKind
	ast.Range
}

func (*DeclarationKindMismatchError) Error

func (*DeclarationKindMismatchError) IsUserError added in v0.25.0

func (*DeclarationKindMismatchError) IsUserError()

func (*DeclarationKindMismatchError) SecondaryError

func (e *DeclarationKindMismatchError) SecondaryError() string

type DefaultFunctionConflictError added in v0.26.0

type DefaultFunctionConflictError struct {
	CompositeType *CompositeType
	Member        *Member
}

DefaultFunctionConflictError

func (*DefaultFunctionConflictError) EndPosition added in v0.26.0

func (e *DefaultFunctionConflictError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*DefaultFunctionConflictError) Error added in v0.26.0

func (*DefaultFunctionConflictError) IsUserError added in v0.26.0

func (*DefaultFunctionConflictError) IsUserError()

func (*DefaultFunctionConflictError) StartPosition added in v0.26.0

func (e *DefaultFunctionConflictError) StartPosition() ast.Position

type DictionaryEntryType

type DictionaryEntryType struct {
	KeyType   Type
	ValueType Type
}

type DictionaryExpressionTypes added in v0.26.0

type DictionaryExpressionTypes struct {
	DictionaryType *DictionaryType
	EntryTypes     []DictionaryEntryType
}

type DictionaryType

type DictionaryType struct {
	KeyType   Type
	ValueType Type
	// contains filtered or unexported fields
}

func NewDictionaryType added in v0.24.0

func NewDictionaryType(memoryGauge common.MemoryGauge, keyType, valueType Type) *DictionaryType

func (*DictionaryType) AllowsValueIndexingAssignment added in v0.7.0

func (*DictionaryType) AllowsValueIndexingAssignment() bool

func (*DictionaryType) ElementType

func (t *DictionaryType) ElementType(_ bool) Type

func (*DictionaryType) Equal

func (t *DictionaryType) Equal(other Type) bool

func (*DictionaryType) GetMembers added in v0.7.0

func (t *DictionaryType) GetMembers() map[string]MemberResolver

func (*DictionaryType) ID

func (t *DictionaryType) ID() TypeID

func (*DictionaryType) IndexingType

func (t *DictionaryType) IndexingType() Type

func (*DictionaryType) IsEquatable added in v0.7.0

func (*DictionaryType) IsEquatable() bool

func (*DictionaryType) IsExportable added in v0.30.0

func (t *DictionaryType) IsExportable(results map[*Member]bool) bool

func (*DictionaryType) IsImportable added in v0.17.0

func (t *DictionaryType) IsImportable(results map[*Member]bool) bool

func (*DictionaryType) IsInvalidType

func (t *DictionaryType) IsInvalidType() bool

func (*DictionaryType) IsResourceType

func (t *DictionaryType) IsResourceType() bool

func (*DictionaryType) IsStorable added in v0.5.0

func (t *DictionaryType) IsStorable(results map[*Member]bool) bool

func (*DictionaryType) IsType

func (*DictionaryType) IsType()

func (*DictionaryType) QualifiedString

func (t *DictionaryType) QualifiedString() string

func (*DictionaryType) Resolve

func (t *DictionaryType) Resolve(typeArguments *TypeParameterTypeOrderedMap) Type

func (*DictionaryType) RewriteWithRestrictedTypes added in v0.8.0

func (t *DictionaryType) RewriteWithRestrictedTypes() (Type, bool)

func (*DictionaryType) String

func (t *DictionaryType) String() string

func (*DictionaryType) Tag added in v0.24.0

func (t *DictionaryType) Tag() TypeTag

func (*DictionaryType) TypeAnnotationState

func (t *DictionaryType) TypeAnnotationState() TypeAnnotationState

func (*DictionaryType) Unify

func (t *DictionaryType) Unify(
	other Type,
	typeParameters *TypeParameterTypeOrderedMap,
	report func(err error),
	outerRange ast.Range,
) bool

type DuplicateConformanceError

type DuplicateConformanceError struct {
	CompositeType *CompositeType
	InterfaceType *InterfaceType
	ast.Range
}

DuplicateConformanceError

TODO: just make this a warning?

func (*DuplicateConformanceError) Error

func (e *DuplicateConformanceError) Error() string

func (*DuplicateConformanceError) IsUserError added in v0.25.0

func (*DuplicateConformanceError) IsUserError()

type Elaboration

type Elaboration struct {
	TransactionTypes []*TransactionType
	// contains filtered or unexported fields
}

func NewElaboration

func NewElaboration(gauge common.MemoryGauge) *Elaboration

func (*Elaboration) AllStaticCastTypes added in v0.30.0

func (e *Elaboration) AllStaticCastTypes() map[*ast.CastingExpression]CastTypes

func (*Elaboration) ArrayExpressionTypes added in v0.26.0

func (e *Elaboration) ArrayExpressionTypes(expression *ast.ArrayExpression) (types ArrayExpressionTypes)

func (*Elaboration) AssignmentStatementTypes added in v0.26.0

func (e *Elaboration) AssignmentStatementTypes(assignment *ast.AssignmentStatement) (types AssignmentStatementTypes)

func (*Elaboration) BinaryExpressionTypes added in v0.26.0

func (e *Elaboration) BinaryExpressionTypes(expression *ast.BinaryExpression) (types BinaryExpressionTypes)

func (*Elaboration) CastingExpressionTypes added in v0.30.0

func (e *Elaboration) CastingExpressionTypes(expression *ast.CastingExpression) (types CastingExpressionTypes)

func (*Elaboration) CompositeDeclarationType added in v0.30.0

func (e *Elaboration) CompositeDeclarationType(declaration *ast.CompositeDeclaration) *CompositeType

func (*Elaboration) CompositeNestedDeclarations

func (e *Elaboration) CompositeNestedDeclarations(declaration *ast.CompositeDeclaration) map[string]ast.Declaration

func (*Elaboration) CompositeType added in v0.30.0

func (e *Elaboration) CompositeType(typeID common.TypeID) *CompositeType

func (*Elaboration) CompositeTypeDeclaration added in v0.30.0

func (e *Elaboration) CompositeTypeDeclaration(compositeType *CompositeType) *ast.CompositeDeclaration

func (*Elaboration) ConstructorFunctionType added in v0.30.0

func (e *Elaboration) ConstructorFunctionType(initializer *ast.SpecialFunctionDeclaration) *FunctionType

func (*Elaboration) DictionaryExpressionTypes added in v0.26.0

func (e *Elaboration) DictionaryExpressionTypes(
	expression *ast.DictionaryExpression,
) (types DictionaryExpressionTypes)

func (*Elaboration) EmitStatementEventType added in v0.30.0

func (e *Elaboration) EmitStatementEventType(statement *ast.EmitStatement) *CompositeType

func (*Elaboration) FixedPointExpression added in v0.16.0

func (e *Elaboration) FixedPointExpression(expression *ast.FixedPointExpression) Type

func (*Elaboration) ForEachGlobalType added in v0.30.0

func (e *Elaboration) ForEachGlobalType(f func(name string, variable *Variable))

func (*Elaboration) ForEachGlobalValue added in v0.30.0

func (e *Elaboration) ForEachGlobalValue(f func(name string, variable *Variable))

func (*Elaboration) ForceExpressionType added in v0.30.0

func (e *Elaboration) ForceExpressionType(expression *ast.ForceExpression) Type

func (*Elaboration) FunctionDeclarationFunctionType added in v0.30.0

func (e *Elaboration) FunctionDeclarationFunctionType(declaration *ast.FunctionDeclaration) *FunctionType

func (*Elaboration) FunctionEntryPointType added in v0.13.0

func (e *Elaboration) FunctionEntryPointType() (*FunctionType, error)

FunctionEntryPointType returns the type of the entry point function declaration, if any.

Returns an error if no valid entry point function declaration exists.

func (*Elaboration) FunctionExpressionFunctionType

func (e *Elaboration) FunctionExpressionFunctionType(expression *ast.FunctionExpression) *FunctionType

func (*Elaboration) GetGlobalType added in v0.30.0

func (e *Elaboration) GetGlobalType(name string) (*Variable, bool)

func (*Elaboration) GetGlobalValue added in v0.30.0

func (e *Elaboration) GetGlobalValue(name string) (*Variable, bool)

func (*Elaboration) IdentifierInInvocationType added in v0.30.0

func (e *Elaboration) IdentifierInInvocationType(expression *ast.IdentifierExpression) Type

func (*Elaboration) ImportDeclarationsResolvedLocations added in v0.10.0

func (e *Elaboration) ImportDeclarationsResolvedLocations(declaration *ast.ImportDeclaration) []ResolvedLocation

func (*Elaboration) IndexExpressionTypes added in v0.26.0

func (e *Elaboration) IndexExpressionTypes(expression *ast.IndexExpression) (types IndexExpressionTypes)

func (*Elaboration) IntegerExpressionType added in v0.16.0

func (e *Elaboration) IntegerExpressionType(expression *ast.IntegerExpression) Type

func (*Elaboration) InterfaceDeclarationType added in v0.30.0

func (e *Elaboration) InterfaceDeclarationType(declaration *ast.InterfaceDeclaration) *InterfaceType

func (*Elaboration) InterfaceNestedDeclarations

func (e *Elaboration) InterfaceNestedDeclarations(declaration *ast.InterfaceDeclaration) map[string]ast.Declaration

func (*Elaboration) InterfaceType added in v0.30.0

func (e *Elaboration) InterfaceType(typeID common.TypeID) *InterfaceType

func (*Elaboration) InterfaceTypeDeclaration added in v0.30.0

func (e *Elaboration) InterfaceTypeDeclaration(interfaceType *InterfaceType) *ast.InterfaceDeclaration

func (*Elaboration) InvocationExpressionTypes added in v0.26.0

func (e *Elaboration) InvocationExpressionTypes(
	expression *ast.InvocationExpression,
) (types InvocationExpressionTypes)

func (*Elaboration) IsChecking added in v0.13.0

func (e *Elaboration) IsChecking() bool

func (*Elaboration) IsNestedResourceMoveExpression added in v0.20.0

func (e *Elaboration) IsNestedResourceMoveExpression(expression ast.Expression) bool

func (*Elaboration) MemberExpressionExpectedType added in v0.30.0

func (e *Elaboration) MemberExpressionExpectedType(expression *ast.MemberExpression) Type

func (*Elaboration) MemberExpressionMemberInfo added in v0.30.0

func (e *Elaboration) MemberExpressionMemberInfo(expression *ast.MemberExpression) (memberInfo MemberInfo, ok bool)

func (*Elaboration) NumberConversionArgumentTypes added in v0.25.0

func (e *Elaboration) NumberConversionArgumentTypes(
	expression ast.Expression,
) (
	types NumberConversionArgumentTypes,
)

func (*Elaboration) PostConditionsRewrite

func (e *Elaboration) PostConditionsRewrite(conditions *ast.Conditions) (rewrite PostConditionsRewrite)

func (*Elaboration) ReferenceExpressionBorrowType added in v0.30.0

func (e *Elaboration) ReferenceExpressionBorrowType(expression *ast.ReferenceExpression) Type

func (*Elaboration) ReturnStatementTypes added in v0.26.0

func (e *Elaboration) ReturnStatementTypes(statement *ast.ReturnStatement) (types ReturnStatementTypes)

func (*Elaboration) RuntimeCastTypes added in v0.25.0

func (e *Elaboration) RuntimeCastTypes(expression *ast.CastingExpression) (types RuntimeCastTypes)

func (*Elaboration) SetArrayExpressionTypes added in v0.30.0

func (e *Elaboration) SetArrayExpressionTypes(expression *ast.ArrayExpression, types ArrayExpressionTypes)

func (*Elaboration) SetAssignmentStatementTypes added in v0.30.0

func (e *Elaboration) SetAssignmentStatementTypes(
	assignment *ast.AssignmentStatement,
	types AssignmentStatementTypes,
)

func (*Elaboration) SetBinaryExpressionTypes added in v0.30.0

func (e *Elaboration) SetBinaryExpressionTypes(expression *ast.BinaryExpression, types BinaryExpressionTypes)

func (*Elaboration) SetCastingExpressionTypes added in v0.30.0

func (e *Elaboration) SetCastingExpressionTypes(
	expression *ast.CastingExpression,
	types CastingExpressionTypes,
)

func (*Elaboration) SetCompositeDeclarationType added in v0.30.0

func (e *Elaboration) SetCompositeDeclarationType(
	declaration *ast.CompositeDeclaration,
	compositeType *CompositeType,
)

func (*Elaboration) SetCompositeNestedDeclarations added in v0.30.0

func (e *Elaboration) SetCompositeNestedDeclarations(
	declaration *ast.CompositeDeclaration,
	nestedDeclaration map[string]ast.Declaration,
)

func (*Elaboration) SetCompositeType added in v0.30.0

func (e *Elaboration) SetCompositeType(typeID TypeID, ty *CompositeType)

func (*Elaboration) SetCompositeTypeDeclaration added in v0.30.0

func (e *Elaboration) SetCompositeTypeDeclaration(
	compositeType *CompositeType,
	declaration *ast.CompositeDeclaration,
)

func (*Elaboration) SetConstructorFunctionType added in v0.30.0

func (e *Elaboration) SetConstructorFunctionType(
	initializer *ast.SpecialFunctionDeclaration,
	functionType *FunctionType,
)

func (*Elaboration) SetDictionaryExpressionTypes added in v0.30.0

func (e *Elaboration) SetDictionaryExpressionTypes(
	expression *ast.DictionaryExpression,
	types DictionaryExpressionTypes,
)

func (*Elaboration) SetEmitStatementEventType added in v0.30.0

func (e *Elaboration) SetEmitStatementEventType(statement *ast.EmitStatement, compositeType *CompositeType)

func (*Elaboration) SetFixedPointExpression added in v0.30.0

func (e *Elaboration) SetFixedPointExpression(expression *ast.FixedPointExpression, ty Type)

func (*Elaboration) SetForceExpressionType added in v0.30.0

func (e *Elaboration) SetForceExpressionType(expression *ast.ForceExpression, ty Type)

func (*Elaboration) SetFunctionDeclarationFunctionType added in v0.30.0

func (e *Elaboration) SetFunctionDeclarationFunctionType(
	declaration *ast.FunctionDeclaration,
	functionType *FunctionType,
)

func (*Elaboration) SetFunctionExpressionFunctionType added in v0.30.0

func (e *Elaboration) SetFunctionExpressionFunctionType(
	expression *ast.FunctionExpression,
	functionType *FunctionType,
)

func (*Elaboration) SetGlobalType added in v0.30.0

func (e *Elaboration) SetGlobalType(name string, variable *Variable)

func (*Elaboration) SetGlobalValue added in v0.30.0

func (e *Elaboration) SetGlobalValue(name string, variable *Variable)

func (*Elaboration) SetIdentifierInInvocationType added in v0.30.0

func (e *Elaboration) SetIdentifierInInvocationType(expression *ast.IdentifierExpression, valueType Type)

func (*Elaboration) SetImportDeclarationsResolvedLocations added in v0.30.0

func (e *Elaboration) SetImportDeclarationsResolvedLocations(
	declaration *ast.ImportDeclaration,
	locations []ResolvedLocation,
)

func (*Elaboration) SetIndexExpressionTypes added in v0.30.0

func (e *Elaboration) SetIndexExpressionTypes(expression *ast.IndexExpression, types IndexExpressionTypes)

func (*Elaboration) SetIntegerExpressionType added in v0.30.0

func (e *Elaboration) SetIntegerExpressionType(expression *ast.IntegerExpression, actualType Type)

func (*Elaboration) SetInterfaceDeclarationType added in v0.30.0

func (e *Elaboration) SetInterfaceDeclarationType(
	declaration *ast.InterfaceDeclaration,
	interfaceType *InterfaceType,
)

func (*Elaboration) SetInterfaceNestedDeclarations added in v0.30.0

func (e *Elaboration) SetInterfaceNestedDeclarations(
	declaration *ast.InterfaceDeclaration,
	nestedDeclaration map[string]ast.Declaration,
)

func (*Elaboration) SetInterfaceType added in v0.30.0

func (e *Elaboration) SetInterfaceType(typeID TypeID, ty *InterfaceType)

func (*Elaboration) SetInterfaceTypeDeclaration added in v0.30.0

func (e *Elaboration) SetInterfaceTypeDeclaration(
	interfaceType *InterfaceType,
	declaration *ast.InterfaceDeclaration,
)

func (*Elaboration) SetInvocationExpressionTypes added in v0.30.0

func (e *Elaboration) SetInvocationExpressionTypes(
	expression *ast.InvocationExpression,
	types InvocationExpressionTypes,
)

func (*Elaboration) SetIsNestedResourceMoveExpression added in v0.30.0

func (e *Elaboration) SetIsNestedResourceMoveExpression(expression ast.Expression)

func (*Elaboration) SetMemberExpressionExpectedType added in v0.30.0

func (e *Elaboration) SetMemberExpressionExpectedType(expression *ast.MemberExpression, expectedType Type)

func (*Elaboration) SetMemberExpressionMemberInfo added in v0.30.0

func (e *Elaboration) SetMemberExpressionMemberInfo(expression *ast.MemberExpression, memberInfo MemberInfo)

func (*Elaboration) SetNumberConversionArgumentTypes added in v0.30.0

func (e *Elaboration) SetNumberConversionArgumentTypes(
	expression ast.Expression,
	types NumberConversionArgumentTypes,
)

func (*Elaboration) SetPostConditionsRewrite added in v0.30.0

func (e *Elaboration) SetPostConditionsRewrite(conditions *ast.Conditions, rewrite PostConditionsRewrite)

func (*Elaboration) SetReferenceExpressionBorrowType added in v0.30.0

func (e *Elaboration) SetReferenceExpressionBorrowType(expression *ast.ReferenceExpression, ty Type)

func (*Elaboration) SetReturnStatementTypes added in v0.30.0

func (e *Elaboration) SetReturnStatementTypes(statement *ast.ReturnStatement, types ReturnStatementTypes)

func (*Elaboration) SetRuntimeCastTypes added in v0.30.0

func (e *Elaboration) SetRuntimeCastTypes(expression *ast.CastingExpression, types RuntimeCastTypes)

func (*Elaboration) SetStaticCastTypes added in v0.30.0

func (e *Elaboration) SetStaticCastTypes(expression *ast.CastingExpression, types CastTypes)

func (*Elaboration) SetStringExpressionType added in v0.30.0

func (e *Elaboration) SetStringExpressionType(expression *ast.StringExpression, ty Type)

func (*Elaboration) SetSwapStatementTypes added in v0.30.0

func (e *Elaboration) SetSwapStatementTypes(statement *ast.SwapStatement, types SwapStatementTypes)

func (*Elaboration) SetTransactionDeclarationType added in v0.30.0

func (e *Elaboration) SetTransactionDeclarationType(declaration *ast.TransactionDeclaration, ty *TransactionType)

func (*Elaboration) SetVariableDeclarationTypes added in v0.30.0

func (e *Elaboration) SetVariableDeclarationTypes(
	declaration *ast.VariableDeclaration,
	types VariableDeclarationTypes,
)

func (*Elaboration) StaticCastTypes added in v0.25.0

func (e *Elaboration) StaticCastTypes(expression *ast.CastingExpression) (types CastTypes)

func (*Elaboration) StringExpressionType added in v0.24.0

func (e *Elaboration) StringExpressionType(expression *ast.StringExpression) Type

func (*Elaboration) SwapStatementTypes added in v0.26.0

func (e *Elaboration) SwapStatementTypes(statement *ast.SwapStatement) (types SwapStatementTypes)

func (*Elaboration) TransactionDeclarationType added in v0.30.0

func (e *Elaboration) TransactionDeclarationType(declaration *ast.TransactionDeclaration) *TransactionType

func (*Elaboration) VariableDeclarationTypes added in v0.26.0

func (e *Elaboration) VariableDeclarationTypes(declaration *ast.VariableDeclaration) (types VariableDeclarationTypes)

func (*Elaboration) VariableDeclarationTypesCount added in v0.30.0

func (e *Elaboration) VariableDeclarationTypesCount() int

type ElaborationImport added in v0.13.0

type ElaborationImport struct {
	Elaboration *Elaboration
}

ElaborationImport

func (ElaborationImport) AllTypeElements added in v0.13.0

func (i ElaborationImport) AllTypeElements() *StringImportElementOrderedMap

func (ElaborationImport) AllValueElements added in v0.13.0

func (i ElaborationImport) AllValueElements() *StringImportElementOrderedMap

func (ElaborationImport) IsChecking added in v0.13.0

func (i ElaborationImport) IsChecking() bool

type EmitImportedEventError

type EmitImportedEventError struct {
	Type Type
	ast.Range
}

func (*EmitImportedEventError) Error

func (e *EmitImportedEventError) Error() string

func (*EmitImportedEventError) IsUserError added in v0.25.0

func (*EmitImportedEventError) IsUserError()

type EmitNonEventError

type EmitNonEventError struct {
	Type Type
	ast.Range
}

func (*EmitNonEventError) Error

func (e *EmitNonEventError) Error() string

func (*EmitNonEventError) IsUserError added in v0.25.0

func (*EmitNonEventError) IsUserError()

type EndPositionGetter added in v0.24.0

type EndPositionGetter func(common.MemoryGauge) ast.Position

type EnumInfo added in v0.10.0

type EnumInfo struct {
	RawType Type
	Cases   []string
}

type ExternalMutationError added in v0.24.0

type ExternalMutationError struct {
	ContainerType Type
	Name          string
	ast.Range
	DeclarationKind common.DeclarationKind
}

func (*ExternalMutationError) Error added in v0.24.0

func (e *ExternalMutationError) Error() string

func (*ExternalMutationError) IsUserError added in v0.25.0

func (*ExternalMutationError) IsUserError()

func (*ExternalMutationError) SecondaryError added in v0.24.0

func (e *ExternalMutationError) SecondaryError() string

type FieldReinitializationError added in v0.24.0

type FieldReinitializationError struct {
	Name string
	ast.Range
}

FieldReinitializationError

func (*FieldReinitializationError) Error added in v0.24.0

func (*FieldReinitializationError) IsUserError added in v0.25.0

func (*FieldReinitializationError) IsUserError()

type FieldTypeNotStorableError added in v0.5.0

type FieldTypeNotStorableError struct {
	Type Type
	Name string
	Pos  ast.Position
}

func (*FieldTypeNotStorableError) EndPosition added in v0.10.0

func (e *FieldTypeNotStorableError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*FieldTypeNotStorableError) Error added in v0.5.0

func (e *FieldTypeNotStorableError) Error() string

func (*FieldTypeNotStorableError) IsUserError added in v0.25.0

func (*FieldTypeNotStorableError) IsUserError()

func (*FieldTypeNotStorableError) SecondaryError added in v0.31.0

func (e *FieldTypeNotStorableError) SecondaryError() string

func (*FieldTypeNotStorableError) StartPosition added in v0.10.0

func (e *FieldTypeNotStorableError) StartPosition() ast.Position

type FieldUninitializedError

type FieldUninitializedError struct {
	ContainerType Type
	Name          string
	Pos           ast.Position
}

FieldUninitializedError

func (*FieldUninitializedError) EndPosition

func (e *FieldUninitializedError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*FieldUninitializedError) Error

func (e *FieldUninitializedError) Error() string

func (*FieldUninitializedError) IsUserError added in v0.25.0

func (*FieldUninitializedError) IsUserError()

func (*FieldUninitializedError) SecondaryError

func (e *FieldUninitializedError) SecondaryError() string

func (*FieldUninitializedError) StartPosition

func (e *FieldUninitializedError) StartPosition() ast.Position

type FixedPointNumericType added in v0.15.0

type FixedPointNumericType struct {
	// contains filtered or unexported fields
}

FixedPointNumericType represents all the types in the fixed-point range.

func NewFixedPointNumericType added in v0.15.0

func NewFixedPointNumericType(typeName string) *FixedPointNumericType

func (*FixedPointNumericType) AsSuperType added in v0.24.0

func (t *FixedPointNumericType) AsSuperType() *FixedPointNumericType

func (*FixedPointNumericType) Equal added in v0.15.0

func (t *FixedPointNumericType) Equal(other Type) bool

func (*FixedPointNumericType) GetMembers added in v0.15.0

func (t *FixedPointNumericType) GetMembers() map[string]MemberResolver

func (*FixedPointNumericType) ID added in v0.15.0

func (t *FixedPointNumericType) ID() TypeID

func (*FixedPointNumericType) IsEquatable added in v0.15.0

func (*FixedPointNumericType) IsEquatable() bool

func (*FixedPointNumericType) IsExportable added in v0.30.0

func (*FixedPointNumericType) IsExportable(_ map[*Member]bool) bool

func (*FixedPointNumericType) IsImportable added in v0.17.0

func (t *FixedPointNumericType) IsImportable(_ map[*Member]bool) bool

func (*FixedPointNumericType) IsInvalidType added in v0.15.0

func (*FixedPointNumericType) IsInvalidType() bool

func (*FixedPointNumericType) IsResourceType added in v0.15.0

func (*FixedPointNumericType) IsResourceType() bool

func (*FixedPointNumericType) IsStorable added in v0.15.0

func (*FixedPointNumericType) IsStorable(_ map[*Member]bool) bool

func (*FixedPointNumericType) IsSuperType added in v0.24.0

func (t *FixedPointNumericType) IsSuperType() bool

func (*FixedPointNumericType) IsType added in v0.15.0

func (*FixedPointNumericType) IsType()

func (*FixedPointNumericType) MaxFractional added in v0.15.0

func (t *FixedPointNumericType) MaxFractional() *big.Int

func (*FixedPointNumericType) MaxInt added in v0.15.0

func (t *FixedPointNumericType) MaxInt() *big.Int

func (*FixedPointNumericType) MinFractional added in v0.15.0

func (t *FixedPointNumericType) MinFractional() *big.Int

func (*FixedPointNumericType) MinInt added in v0.15.0

func (t *FixedPointNumericType) MinInt() *big.Int

func (*FixedPointNumericType) QualifiedString added in v0.15.0

func (t *FixedPointNumericType) QualifiedString() string

func (*FixedPointNumericType) Resolve added in v0.15.0

func (*FixedPointNumericType) RewriteWithRestrictedTypes added in v0.15.0

func (t *FixedPointNumericType) RewriteWithRestrictedTypes() (result Type, rewritten bool)

func (*FixedPointNumericType) Scale added in v0.15.0

func (t *FixedPointNumericType) Scale() uint

func (*FixedPointNumericType) String added in v0.15.0

func (t *FixedPointNumericType) String() string

func (*FixedPointNumericType) SupportsSaturatingAdd added in v0.15.0

func (t *FixedPointNumericType) SupportsSaturatingAdd() bool

func (*FixedPointNumericType) SupportsSaturatingDivide added in v0.15.0

func (t *FixedPointNumericType) SupportsSaturatingDivide() bool

func (*FixedPointNumericType) SupportsSaturatingMultiply added in v0.15.0

func (t *FixedPointNumericType) SupportsSaturatingMultiply() bool

func (*FixedPointNumericType) SupportsSaturatingSubtract added in v0.15.0

func (t *FixedPointNumericType) SupportsSaturatingSubtract() bool

func (*FixedPointNumericType) Tag added in v0.24.0

func (t *FixedPointNumericType) Tag() TypeTag

func (*FixedPointNumericType) TypeAnnotationState added in v0.15.0

func (*FixedPointNumericType) TypeAnnotationState() TypeAnnotationState

func (*FixedPointNumericType) Unify added in v0.15.0

func (*FixedPointNumericType) WithFractionalRange added in v0.15.0

func (t *FixedPointNumericType) WithFractionalRange(
	minFractional *big.Int,
	maxFractional *big.Int,
) *FixedPointNumericType

func (*FixedPointNumericType) WithIntRange added in v0.15.0

func (t *FixedPointNumericType) WithIntRange(minInt *big.Int, maxInt *big.Int) *FixedPointNumericType

func (*FixedPointNumericType) WithSaturatingAdd added in v0.15.0

func (t *FixedPointNumericType) WithSaturatingAdd() *FixedPointNumericType

func (*FixedPointNumericType) WithSaturatingDivide added in v0.15.0

func (t *FixedPointNumericType) WithSaturatingDivide() *FixedPointNumericType

func (*FixedPointNumericType) WithSaturatingMultiply added in v0.15.0

func (t *FixedPointNumericType) WithSaturatingMultiply() *FixedPointNumericType

func (*FixedPointNumericType) WithSaturatingSubtract added in v0.15.0

func (t *FixedPointNumericType) WithSaturatingSubtract() *FixedPointNumericType

func (*FixedPointNumericType) WithScale added in v0.15.0

func (t *FixedPointNumericType) WithScale(scale uint) *FixedPointNumericType

func (*FixedPointNumericType) WithTag added in v0.24.0

type FractionalRangedType

type FractionalRangedType interface {
	IntegerRangedType
	Scale() uint
	MinFractional() *big.Int
	MaxFractional() *big.Int
}

type FunctionActivation

type FunctionActivation struct {
	ReturnType           Type
	ReturnInfo           *ReturnInfo
	InitializationInfo   *InitializationInfo
	Loops                int
	Switches             int
	ValueActivationDepth int
}

func (FunctionActivation) InLoop

func (a FunctionActivation) InLoop() bool

func (FunctionActivation) InSwitch added in v0.10.0

func (a FunctionActivation) InSwitch() bool

func (*FunctionActivation) WithLoop added in v0.28.0

func (a *FunctionActivation) WithLoop(f func())

func (*FunctionActivation) WithSwitch added in v0.28.0

func (a *FunctionActivation) WithSwitch(f func())

type FunctionActivations

type FunctionActivations struct {
	// contains filtered or unexported fields
}

func (*FunctionActivations) Current

func (*FunctionActivations) EnterFunction

func (a *FunctionActivations) EnterFunction(functionType *FunctionType, valueActivationDepth int) *FunctionActivation

func (*FunctionActivations) IsLocal

func (a *FunctionActivations) IsLocal() bool

func (*FunctionActivations) LeaveFunction

func (a *FunctionActivations) LeaveFunction()

func (*FunctionActivations) WithFunction

func (a *FunctionActivations) WithFunction(
	functionType *FunctionType,
	valueActivationDepth int,
	f func(activation *FunctionActivation),
)

type FunctionExpressionInConditionError

type FunctionExpressionInConditionError struct {
	ast.Range
}

func (*FunctionExpressionInConditionError) Error

func (*FunctionExpressionInConditionError) IsUserError added in v0.25.0

func (*FunctionExpressionInConditionError) IsUserError()

type FunctionInvocation added in v0.17.0

type FunctionInvocation struct {
	FunctionType               *FunctionType
	TrailingSeparatorPositions []ast.Position
	StartPos                   Position
	EndPos                     Position
}

type FunctionInvocations added in v0.17.0

type FunctionInvocations struct {
	// contains filtered or unexported fields
}

func NewFunctionInvocations added in v0.17.0

func NewFunctionInvocations() *FunctionInvocations

func (*FunctionInvocations) Find added in v0.17.0

func (*FunctionInvocations) Put added in v0.17.0

func (f *FunctionInvocations) Put(
	startPos, endPos ast.Position,
	functionType *FunctionType,
	trailingSeparatorPositions []ast.Position,
)

type FunctionType

type FunctionType struct {
	ReturnTypeAnnotation     TypeAnnotation
	RequiredArgumentCount    *int
	ArgumentExpressionsCheck ArgumentExpressionsCheck
	Members                  *StringMemberOrderedMap
	TypeParameters           []*TypeParameter
	Parameters               []Parameter
	IsConstructor            bool
}

FunctionType

var AuthAccountTypeLinkAccountFunctionType *FunctionType

func AccountForEachFunctionType added in v0.26.0

func AccountForEachFunctionType(pathType Type) *FunctionType

func ArrayAppendAllFunctionType added in v0.20.0

func ArrayAppendAllFunctionType(arrayType Type) *FunctionType

func ArrayAppendFunctionType added in v0.20.0

func ArrayAppendFunctionType(elementType Type) *FunctionType

func ArrayConcatFunctionType added in v0.20.0

func ArrayConcatFunctionType(arrayType Type) *FunctionType

func ArrayContainsFunctionType added in v0.20.0

func ArrayContainsFunctionType(elementType Type) *FunctionType

func ArrayFirstIndexFunctionType added in v0.24.0

func ArrayFirstIndexFunctionType(elementType Type) *FunctionType

func ArrayInsertFunctionType added in v0.20.0

func ArrayInsertFunctionType(elementType Type) *FunctionType

func ArrayRemoveFirstFunctionType added in v0.20.0

func ArrayRemoveFirstFunctionType(elementType Type) *FunctionType

func ArrayRemoveFunctionType added in v0.20.0

func ArrayRemoveFunctionType(elementType Type) *FunctionType

func ArrayRemoveLastFunctionType added in v0.20.0

func ArrayRemoveLastFunctionType(elementType Type) *FunctionType

func ArraySliceFunctionType added in v0.24.0

func ArraySliceFunctionType(elementType Type) *FunctionType

func CapabilityTypeBorrowFunctionType added in v0.20.0

func CapabilityTypeBorrowFunctionType(borrowType Type) *FunctionType

func CapabilityTypeCheckFunctionType added in v0.20.0

func CapabilityTypeCheckFunctionType(borrowType Type) *FunctionType

func CompositeConstructorType added in v0.27.0

func CompositeConstructorType(
	elaboration *Elaboration,
	compositeDeclaration *ast.CompositeDeclaration,
	compositeType *CompositeType,
) (
	constructorFunctionType *FunctionType,
	argumentLabels []string,
)

func DictionaryContainsKeyFunctionType added in v0.20.0

func DictionaryContainsKeyFunctionType(t *DictionaryType) *FunctionType

func DictionaryForEachKeyFunctionType added in v0.27.1

func DictionaryForEachKeyFunctionType(t *DictionaryType) *FunctionType

func DictionaryInsertFunctionType added in v0.20.0

func DictionaryInsertFunctionType(t *DictionaryType) *FunctionType

func DictionaryRemoveFunctionType added in v0.20.0

func DictionaryRemoveFunctionType(t *DictionaryType) *FunctionType

func EnumConstructorType added in v0.20.0

func EnumConstructorType(compositeType *CompositeType) *FunctionType

func FromStringFunctionType added in v0.28.0

func FromStringFunctionType(ty Type) *FunctionType

func NumberConversionFunctionType added in v0.21.2

func NumberConversionFunctionType(numberType Type) *FunctionType

func OptionalTypeMapFunctionType added in v0.20.0

func OptionalTypeMapFunctionType(typ Type) *FunctionType

func (*FunctionType) ArgumentLabels

func (t *FunctionType) ArgumentLabels() (argumentLabels []string)

func (*FunctionType) Equal

func (t *FunctionType) Equal(other Type) bool

NOTE: parameter names and argument labels are intentionally *not* considered!

func (*FunctionType) GetMembers added in v0.7.0

func (t *FunctionType) GetMembers() map[string]MemberResolver

func (*FunctionType) HasSameArgumentLabels added in v0.7.0

func (t *FunctionType) HasSameArgumentLabels(other *FunctionType) bool

func (*FunctionType) ID

func (t *FunctionType) ID() TypeID

NOTE: parameter names and argument labels are *not* part of the ID!

func (*FunctionType) IsEquatable added in v0.7.0

func (*FunctionType) IsEquatable() bool

func (*FunctionType) IsExportable added in v0.30.0

func (t *FunctionType) IsExportable(_ map[*Member]bool) bool

func (*FunctionType) IsImportable added in v0.17.0

func (t *FunctionType) IsImportable(_ map[*Member]bool) bool

func (*FunctionType) IsInvalidType

func (t *FunctionType) IsInvalidType() bool

func (*FunctionType) IsResourceType

func (*FunctionType) IsResourceType() bool

func (*FunctionType) IsStorable added in v0.5.0

func (t *FunctionType) IsStorable(_ map[*Member]bool) bool

func (*FunctionType) IsType

func (*FunctionType) IsType()

func (*FunctionType) QualifiedString

func (t *FunctionType) QualifiedString() string

func (*FunctionType) Resolve

func (t *FunctionType) Resolve(typeArguments *TypeParameterTypeOrderedMap) Type

func (*FunctionType) RewriteWithRestrictedTypes added in v0.8.0

func (t *FunctionType) RewriteWithRestrictedTypes() (Type, bool)

func (*FunctionType) String

func (t *FunctionType) String() string

func (*FunctionType) Tag added in v0.24.0

func (t *FunctionType) Tag() TypeTag

func (*FunctionType) TypeAnnotationState

func (t *FunctionType) TypeAnnotationState() TypeAnnotationState

func (*FunctionType) Unify

func (t *FunctionType) Unify(
	other Type,
	typeParameters *TypeParameterTypeOrderedMap,
	report func(err error),
	outerRange ast.Range,
) (
	result bool,
)

type GenericType

type GenericType struct {
	TypeParameter *TypeParameter
}

GenericType

func (*GenericType) Equal

func (t *GenericType) Equal(other Type) bool

func (*GenericType) GetMembers added in v0.7.0

func (t *GenericType) GetMembers() map[string]MemberResolver

func (*GenericType) ID

func (t *GenericType) ID() TypeID

func (*GenericType) IsEquatable added in v0.7.0

func (*GenericType) IsEquatable() bool

func (*GenericType) IsExportable added in v0.30.0

func (*GenericType) IsExportable(_ map[*Member]bool) bool

func (*GenericType) IsImportable added in v0.17.0

func (t *GenericType) IsImportable(_ map[*Member]bool) bool

func (*GenericType) IsInvalidType

func (*GenericType) IsInvalidType() bool

func (*GenericType) IsResourceType

func (*GenericType) IsResourceType() bool

func (*GenericType) IsStorable added in v0.5.0

func (*GenericType) IsStorable(_ map[*Member]bool) bool

func (*GenericType) IsType

func (*GenericType) IsType()

func (*GenericType) QualifiedString

func (t *GenericType) QualifiedString() string

func (*GenericType) Resolve

func (t *GenericType) Resolve(typeArguments *TypeParameterTypeOrderedMap) Type

func (*GenericType) RewriteWithRestrictedTypes added in v0.8.0

func (t *GenericType) RewriteWithRestrictedTypes() (result Type, rewritten bool)

func (*GenericType) String

func (t *GenericType) String() string

func (*GenericType) Tag added in v0.24.0

func (t *GenericType) Tag() TypeTag

func (*GenericType) TypeAnnotationState

func (*GenericType) TypeAnnotationState() TypeAnnotationState

func (*GenericType) Unify

func (t *GenericType) Unify(
	other Type,
	typeParameters *TypeParameterTypeOrderedMap,
	report func(err error),
	outerRange ast.Range,
) bool

type HashAlgorithm added in v0.14.0

type HashAlgorithm uint8
const (
	HashAlgorithmUnknown HashAlgorithm = iota
	HashAlgorithmSHA2_256
	HashAlgorithmSHA2_384
	HashAlgorithmSHA3_256
	HashAlgorithmSHA3_384
	HashAlgorithmKMAC128_BLS_BLS12_381
	HashAlgorithmKECCAK_256
)
  • Existing stored values use these raw values and should not change

NOTE: only add new algorithms, do *NOT* change existing items, reuse raw values for other items, swap the order, etc.

Existing stored values use these raw values and should not change

IMPORTANT: update HashAlgorithms AND HashAlgorithm.IsValid

func (HashAlgorithm) DocString added in v0.14.0

func (algo HashAlgorithm) DocString() string

func (HashAlgorithm) IsValid added in v0.30.0

func (algo HashAlgorithm) IsValid() bool

func (HashAlgorithm) Name added in v0.14.0

func (algo HashAlgorithm) Name() string

func (HashAlgorithm) RawValue added in v0.14.0

func (algo HashAlgorithm) RawValue() uint8

func (HashAlgorithm) String added in v0.14.0

func (i HashAlgorithm) String() string

type Import added in v0.5.0

type Import interface {
	AllValueElements() *StringImportElementOrderedMap
	AllTypeElements() *StringImportElementOrderedMap
	IsChecking() bool
}

type ImportElement added in v0.5.0

type ImportElement struct {
	Type            Type
	ArgumentLabels  []string
	DeclarationKind common.DeclarationKind
	Access          ast.Access
}

ImportElement

type ImportHandlerFunc added in v0.5.0

type ImportHandlerFunc func(checker *Checker, importedLocation common.Location, importRange ast.Range) (Import, error)

type ImportedProgramError

type ImportedProgramError struct {
	Err      error
	Location common.Location
	ast.Range
}

func (*ImportedProgramError) ChildErrors

func (e *ImportedProgramError) ChildErrors() []error

func (*ImportedProgramError) Error

func (e *ImportedProgramError) Error() string

func (*ImportedProgramError) ImportLocation

func (e *ImportedProgramError) ImportLocation() common.Location

func (*ImportedProgramError) IsUserError added in v0.25.0

func (*ImportedProgramError) IsUserError()

func (*ImportedProgramError) Unwrap added in v0.32.0

func (e *ImportedProgramError) Unwrap() error

type IncorrectArgumentLabelError

type IncorrectArgumentLabelError struct {
	ExpectedArgumentLabel string
	ActualArgumentLabel   string
	ast.Range
}

func (*IncorrectArgumentLabelError) Error

func (*IncorrectArgumentLabelError) IsUserError added in v0.25.0

func (*IncorrectArgumentLabelError) IsUserError()

func (*IncorrectArgumentLabelError) SecondaryError

func (e *IncorrectArgumentLabelError) SecondaryError() string

type IncorrectTransferOperationError

type IncorrectTransferOperationError struct {
	ActualOperation   ast.TransferOperation
	ExpectedOperation ast.TransferOperation
	ast.Range
}

func (*IncorrectTransferOperationError) Error

func (*IncorrectTransferOperationError) IsUserError added in v0.25.0

func (*IncorrectTransferOperationError) IsUserError()

func (*IncorrectTransferOperationError) SecondaryError

func (e *IncorrectTransferOperationError) SecondaryError() string

type IndexExpressionTypes added in v0.26.0

type IndexExpressionTypes struct {
	IndexedType  ValueIndexableType
	IndexingType Type
}

type InitializationInfo

type InitializationInfo struct {
	ContainerType           Type
	FieldMembers            *MemberFieldDeclarationOrderedMap
	InitializedFieldMembers *persistent.OrderedSet[*Member]
}

func NewInitializationInfo

func NewInitializationInfo(
	containerType Type,
	fieldMembers *MemberFieldDeclarationOrderedMap,
) *InitializationInfo

func (*InitializationInfo) InitializationComplete

func (info *InitializationInfo) InitializationComplete() bool

InitializationComplete returns true if all fields of the container were initialized, false if some fields are uninitialized

type InitializerMismatch

type InitializerMismatch struct {
	CompositeParameters []Parameter
	InterfaceParameters []Parameter
}

type IntegerRangedType

type IntegerRangedType interface {
	Type
	MinInt() *big.Int
	MaxInt() *big.Int
	IsSuperType() bool
}

type InterfaceSet

type InterfaceSet orderedmap.OrderedMap[*InterfaceType, struct{}]

func NewInterfaceSet added in v0.13.0

func NewInterfaceSet() *InterfaceSet

func (*InterfaceSet) Add added in v0.3.0

func (s *InterfaceSet) Add(interfaceType *InterfaceType)

func (InterfaceSet) Contains added in v0.28.0

func (s InterfaceSet) Contains(interfaceType *InterfaceType) bool

func (InterfaceSet) ForEach added in v0.13.0

func (s InterfaceSet) ForEach(f func(*InterfaceType))

func (InterfaceSet) IsSubsetOf

func (s InterfaceSet) IsSubsetOf(other *InterfaceSet) bool

func (InterfaceSet) Len added in v0.13.0

func (s InterfaceSet) Len() int

type InterfaceType

type InterfaceType struct {
	Location common.Location

	Members *StringMemberOrderedMap

	NestedTypes *StringTypeOrderedMap

	Identifier            string
	Fields                []string
	InitializerParameters []Parameter
	CompositeKind         common.CompositeKind
	// contains filtered or unexported fields
}

func (*InterfaceType) Equal

func (t *InterfaceType) Equal(other Type) bool

func (*InterfaceType) FieldPosition added in v0.21.3

func (t *InterfaceType) FieldPosition(name string, declaration *ast.InterfaceDeclaration) ast.Position

func (*InterfaceType) GetCompositeKind

func (t *InterfaceType) GetCompositeKind() common.CompositeKind

func (*InterfaceType) GetContainerType

func (t *InterfaceType) GetContainerType() Type

func (*InterfaceType) GetLocation

func (t *InterfaceType) GetLocation() common.Location

func (*InterfaceType) GetMembers added in v0.7.0

func (t *InterfaceType) GetMembers() map[string]MemberResolver

func (*InterfaceType) GetNestedTypes added in v0.13.2

func (t *InterfaceType) GetNestedTypes() *StringTypeOrderedMap

func (*InterfaceType) ID

func (t *InterfaceType) ID() TypeID

func (*InterfaceType) IsContainerType added in v0.20.3

func (t *InterfaceType) IsContainerType() bool

func (*InterfaceType) IsEquatable added in v0.7.0

func (*InterfaceType) IsEquatable() bool

func (*InterfaceType) IsExportable added in v0.30.0

func (t *InterfaceType) IsExportable(results map[*Member]bool) bool

func (*InterfaceType) IsImportable added in v0.17.0

func (t *InterfaceType) IsImportable(results map[*Member]bool) bool

func (*InterfaceType) IsInvalidType

func (t *InterfaceType) IsInvalidType() bool

func (*InterfaceType) IsResourceType

func (t *InterfaceType) IsResourceType() bool

func (*InterfaceType) IsStorable added in v0.5.0

func (t *InterfaceType) IsStorable(results map[*Member]bool) bool

func (*InterfaceType) IsType

func (*InterfaceType) IsType()

func (*InterfaceType) QualifiedIdentifier

func (t *InterfaceType) QualifiedIdentifier() string

func (*InterfaceType) QualifiedString

func (t *InterfaceType) QualifiedString() string

func (*InterfaceType) Resolve

func (*InterfaceType) RewriteWithRestrictedTypes added in v0.8.0

func (t *InterfaceType) RewriteWithRestrictedTypes() (Type, bool)

func (*InterfaceType) SetContainerType added in v0.17.0

func (t *InterfaceType) SetContainerType(containerType Type)

func (*InterfaceType) String

func (t *InterfaceType) String() string

func (*InterfaceType) Tag added in v0.24.0

func (t *InterfaceType) Tag() TypeTag

func (*InterfaceType) TypeAnnotationState

func (*InterfaceType) TypeAnnotationState() TypeAnnotationState

func (*InterfaceType) Unify

func (*InterfaceType) Unify(_ Type, _ *TypeParameterTypeOrderedMap, _ func(err error), _ ast.Range) bool

type InvalidAccessError

type InvalidAccessError struct {
	Name              string
	RestrictingAccess ast.Access
	DeclarationKind   common.DeclarationKind
	ast.Range
}

func (*InvalidAccessError) Error

func (e *InvalidAccessError) Error() string

func (*InvalidAccessError) IsUserError added in v0.25.0

func (*InvalidAccessError) IsUserError()

type InvalidAccessModifierError

type InvalidAccessModifierError struct {
	Explanation     string
	Pos             ast.Position
	DeclarationKind common.DeclarationKind
	Access          ast.Access
}

func (*InvalidAccessModifierError) EndPosition

func (e *InvalidAccessModifierError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*InvalidAccessModifierError) Error

func (*InvalidAccessModifierError) IsUserError added in v0.25.0

func (*InvalidAccessModifierError) IsUserError()

func (*InvalidAccessModifierError) StartPosition

func (e *InvalidAccessModifierError) StartPosition() ast.Position

type InvalidAddressLiteralError

type InvalidAddressLiteralError struct {
	ast.Range
}

func (*InvalidAddressLiteralError) Error

func (*InvalidAddressLiteralError) IsUserError added in v0.25.0

func (*InvalidAddressLiteralError) IsUserError()

type InvalidAssignmentAccessError

type InvalidAssignmentAccessError struct {
	Name              string
	RestrictingAccess ast.Access
	DeclarationKind   common.DeclarationKind
	ast.Range
}

func (*InvalidAssignmentAccessError) Error

func (*InvalidAssignmentAccessError) IsUserError added in v0.25.0

func (*InvalidAssignmentAccessError) IsUserError()

func (*InvalidAssignmentAccessError) SecondaryError

func (e *InvalidAssignmentAccessError) SecondaryError() string

type InvalidAssignmentTargetError

type InvalidAssignmentTargetError struct {
	ast.Range
}

func (*InvalidAssignmentTargetError) Error

func (*InvalidAssignmentTargetError) IsUserError added in v0.25.0

func (*InvalidAssignmentTargetError) IsUserError()

type InvalidBinaryOperandError

type InvalidBinaryOperandError struct {
	ExpectedType Type
	ActualType   Type
	ast.Range
	Operation ast.Operation
	Side      common.OperandSide
}

func (*InvalidBinaryOperandError) Error

func (e *InvalidBinaryOperandError) Error() string

func (*InvalidBinaryOperandError) IsUserError added in v0.25.0

func (*InvalidBinaryOperandError) IsUserError()

func (*InvalidBinaryOperandError) SecondaryError

func (e *InvalidBinaryOperandError) SecondaryError() string

type InvalidBinaryOperandsError

type InvalidBinaryOperandsError struct {
	LeftType  Type
	RightType Type
	ast.Range
	Operation ast.Operation
}

func (*InvalidBinaryOperandsError) Error

func (*InvalidBinaryOperandsError) IsUserError added in v0.25.0

func (*InvalidBinaryOperandsError) IsUserError()

type InvalidCharacterLiteralError

type InvalidCharacterLiteralError struct {
	Length int
	ast.Range
}

func (*InvalidCharacterLiteralError) Error

func (*InvalidCharacterLiteralError) IsUserError added in v0.25.0

func (*InvalidCharacterLiteralError) IsUserError()

func (*InvalidCharacterLiteralError) SecondaryError

func (e *InvalidCharacterLiteralError) SecondaryError() string

type InvalidConditionalResourceOperandError added in v0.21.3

type InvalidConditionalResourceOperandError struct {
	ast.Range
}

func (*InvalidConditionalResourceOperandError) Error added in v0.21.3

type InvalidConformanceError

type InvalidConformanceError struct {
	Type Type
	ast.Range
}

func (*InvalidConformanceError) Error

func (e *InvalidConformanceError) Error() string

func (*InvalidConformanceError) IsUserError added in v0.25.0

func (*InvalidConformanceError) IsUserError()

type InvalidConstantSizedTypeBaseError

type InvalidConstantSizedTypeBaseError struct {
	ActualBase   int
	ExpectedBase int
	ast.Range
}

func (*InvalidConstantSizedTypeBaseError) Error

func (*InvalidConstantSizedTypeBaseError) IsUserError added in v0.25.0

func (*InvalidConstantSizedTypeBaseError) IsUserError()

func (*InvalidConstantSizedTypeBaseError) SecondaryError

func (e *InvalidConstantSizedTypeBaseError) SecondaryError() string

type InvalidConstantSizedTypeSizeError

type InvalidConstantSizedTypeSizeError struct {
	ActualSize     *big.Int
	ExpectedMinInt *big.Int
	ExpectedMaxInt *big.Int
	ast.Range
}

func (*InvalidConstantSizedTypeSizeError) Error

func (*InvalidConstantSizedTypeSizeError) IsUserError added in v0.25.0

func (*InvalidConstantSizedTypeSizeError) IsUserError()

func (*InvalidConstantSizedTypeSizeError) SecondaryError

func (e *InvalidConstantSizedTypeSizeError) SecondaryError() string

type InvalidConstructionError

type InvalidConstructionError struct {
	ast.Range
}

func (*InvalidConstructionError) Error

func (e *InvalidConstructionError) Error() string

func (*InvalidConstructionError) IsUserError added in v0.25.0

func (*InvalidConstructionError) IsUserError()

type InvalidDeclarationError

type InvalidDeclarationError struct {
	Identifier string
	Kind       common.DeclarationKind
	ast.Range
}

func (*InvalidDeclarationError) Error

func (e *InvalidDeclarationError) Error() string

func (*InvalidDeclarationError) IsUserError added in v0.25.0

func (*InvalidDeclarationError) IsUserError()

type InvalidDestructionError

type InvalidDestructionError struct {
	ast.Range
}

func (*InvalidDestructionError) Error

func (e *InvalidDestructionError) Error() string

func (*InvalidDestructionError) IsUserError added in v0.25.0

func (*InvalidDestructionError) IsUserError()

type InvalidDestructorError

type InvalidDestructorError struct {
	ast.Range
}

func (*InvalidDestructorError) Error

func (e *InvalidDestructorError) Error() string

func (*InvalidDestructorError) IsUserError added in v0.25.0

func (*InvalidDestructorError) IsUserError()

type InvalidDestructorParametersError

type InvalidDestructorParametersError struct {
	ast.Range
}

func (*InvalidDestructorParametersError) Error

func (*InvalidDestructorParametersError) IsUserError added in v0.25.0

func (*InvalidDestructorParametersError) IsUserError()

func (*InvalidDestructorParametersError) SecondaryError

func (e *InvalidDestructorParametersError) SecondaryError() string

type InvalidDictionaryKeyTypeError

type InvalidDictionaryKeyTypeError struct {
	Type Type
	ast.Range
}

func (*InvalidDictionaryKeyTypeError) Error

func (*InvalidDictionaryKeyTypeError) IsUserError added in v0.25.0

func (*InvalidDictionaryKeyTypeError) IsUserError()

type InvalidEntryPointTypeError added in v0.11.0

type InvalidEntryPointTypeError struct {
	Type Type
}

func (*InvalidEntryPointTypeError) Error added in v0.11.0

func (*InvalidEntryPointTypeError) IsUserError added in v0.25.0

func (*InvalidEntryPointTypeError) IsUserError()

type InvalidEnumCaseError added in v0.10.0

type InvalidEnumCaseError struct {
	ContainerDeclarationKind common.DeclarationKind
	ast.Range
}

func (*InvalidEnumCaseError) Error added in v0.10.0

func (e *InvalidEnumCaseError) Error() string

func (*InvalidEnumCaseError) IsUserError added in v0.25.0

func (*InvalidEnumCaseError) IsUserError()

type InvalidEnumConformancesError added in v0.10.0

type InvalidEnumConformancesError struct {
	ast.Range
}

func (*InvalidEnumConformancesError) Error added in v0.10.0

func (*InvalidEnumConformancesError) IsUserError added in v0.25.0

func (*InvalidEnumConformancesError) IsUserError()

type InvalidEnumRawTypeError added in v0.10.0

type InvalidEnumRawTypeError struct {
	Type Type
	ast.Range
}

func (*InvalidEnumRawTypeError) Error added in v0.10.0

func (e *InvalidEnumRawTypeError) Error() string

func (*InvalidEnumRawTypeError) IsUserError added in v0.25.0

func (*InvalidEnumRawTypeError) IsUserError()

func (*InvalidEnumRawTypeError) SecondaryError added in v0.31.0

func (e *InvalidEnumRawTypeError) SecondaryError() string

type InvalidEventParameterTypeError

type InvalidEventParameterTypeError struct {
	Type Type
	ast.Range
}

func (*InvalidEventParameterTypeError) Error

func (*InvalidEventParameterTypeError) IsUserError added in v0.25.0

func (*InvalidEventParameterTypeError) IsUserError()

type InvalidEventUsageError

type InvalidEventUsageError struct {
	ast.Range
}

func (*InvalidEventUsageError) Error

func (e *InvalidEventUsageError) Error() string

func (*InvalidEventUsageError) IsUserError added in v0.25.0

func (*InvalidEventUsageError) IsUserError()

type InvalidFailableResourceDowncastOutsideOptionalBindingError

type InvalidFailableResourceDowncastOutsideOptionalBindingError struct {
	ast.Range
}

func (*InvalidFailableResourceDowncastOutsideOptionalBindingError) Error

func (*InvalidFailableResourceDowncastOutsideOptionalBindingError) IsUserError added in v0.25.0

type InvalidFixedPointLiteralRangeError

type InvalidFixedPointLiteralRangeError struct {
	ExpectedType          Type
	ExpectedMinInt        *big.Int
	ExpectedMinFractional *big.Int
	ExpectedMaxInt        *big.Int
	ExpectedMaxFractional *big.Int
	ast.Range
}

func (*InvalidFixedPointLiteralRangeError) Error

func (*InvalidFixedPointLiteralRangeError) IsUserError added in v0.25.0

func (*InvalidFixedPointLiteralRangeError) IsUserError()

func (*InvalidFixedPointLiteralRangeError) SecondaryError

func (e *InvalidFixedPointLiteralRangeError) SecondaryError() string

type InvalidFixedPointLiteralScaleError

type InvalidFixedPointLiteralScaleError struct {
	ExpectedType  Type
	ExpectedScale uint
	ast.Range
}

func (*InvalidFixedPointLiteralScaleError) Error

func (*InvalidFixedPointLiteralScaleError) IsUserError added in v0.25.0

func (*InvalidFixedPointLiteralScaleError) IsUserError()

func (*InvalidFixedPointLiteralScaleError) SecondaryError

func (e *InvalidFixedPointLiteralScaleError) SecondaryError() string

type InvalidImplementationError

type InvalidImplementationError struct {
	ImplementedKind common.DeclarationKind
	ContainerKind   common.DeclarationKind
	Pos             ast.Position
}

func (*InvalidImplementationError) EndPosition

func (*InvalidImplementationError) Error

func (*InvalidImplementationError) IsUserError added in v0.25.0

func (*InvalidImplementationError) IsUserError()

func (*InvalidImplementationError) StartPosition

func (e *InvalidImplementationError) StartPosition() ast.Position

type InvalidIntegerLiteralRangeError

type InvalidIntegerLiteralRangeError struct {
	ExpectedType   Type
	ExpectedMinInt *big.Int
	ExpectedMaxInt *big.Int
	ast.Range
}

func (*InvalidIntegerLiteralRangeError) Error

func (*InvalidIntegerLiteralRangeError) IsUserError added in v0.25.0

func (*InvalidIntegerLiteralRangeError) IsUserError()

func (*InvalidIntegerLiteralRangeError) SecondaryError

func (e *InvalidIntegerLiteralRangeError) SecondaryError() string

type InvalidInterfaceDeclarationError added in v0.10.0

type InvalidInterfaceDeclarationError struct {
	CompositeKind common.CompositeKind
	ast.Range
}

func (*InvalidInterfaceDeclarationError) Error added in v0.10.0

func (*InvalidInterfaceDeclarationError) IsUserError added in v0.25.0

func (*InvalidInterfaceDeclarationError) IsUserError()

type InvalidInterfaceTypeError

type InvalidInterfaceTypeError struct {
	ActualType   Type
	ExpectedType Type
	ast.Range
}

func (*InvalidInterfaceTypeError) Error

func (e *InvalidInterfaceTypeError) Error() string

func (*InvalidInterfaceTypeError) IsUserError added in v0.25.0

func (*InvalidInterfaceTypeError) IsUserError()

func (*InvalidInterfaceTypeError) SecondaryError

func (e *InvalidInterfaceTypeError) SecondaryError() string

type InvalidMoveError

type InvalidMoveError struct {
	Name            string
	DeclarationKind common.DeclarationKind
	Pos             ast.Position
}

func (*InvalidMoveError) EndPosition

func (e *InvalidMoveError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*InvalidMoveError) Error

func (e *InvalidMoveError) Error() string

func (*InvalidMoveError) IsUserError added in v0.25.0

func (*InvalidMoveError) IsUserError()

func (*InvalidMoveError) StartPosition

func (e *InvalidMoveError) StartPosition() ast.Position

type InvalidMoveOperationError

type InvalidMoveOperationError struct {
	ast.Range
}

func (*InvalidMoveOperationError) Error

func (e *InvalidMoveOperationError) Error() string

func (*InvalidMoveOperationError) IsUserError added in v0.25.0

func (*InvalidMoveOperationError) IsUserError()

func (*InvalidMoveOperationError) SecondaryError

func (e *InvalidMoveOperationError) SecondaryError() string

type InvalidNameError

type InvalidNameError struct {
	Name string
	Pos  ast.Position
}

func (*InvalidNameError) EndPosition

func (e *InvalidNameError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*InvalidNameError) Error

func (e *InvalidNameError) Error() string

func (*InvalidNameError) IsUserError added in v0.25.0

func (*InvalidNameError) IsUserError()

func (*InvalidNameError) StartPosition

func (e *InvalidNameError) StartPosition() ast.Position

type InvalidNativeModifierError added in v0.30.0

type InvalidNativeModifierError struct {
	ast.Range
}

func (*InvalidNativeModifierError) Error added in v0.30.0

func (*InvalidNativeModifierError) IsUserError added in v0.30.0

func (*InvalidNativeModifierError) IsUserError()

type InvalidNestedDeclarationError

type InvalidNestedDeclarationError struct {
	NestedDeclarationKind    common.DeclarationKind
	ContainerDeclarationKind common.DeclarationKind
	ast.Range
}

func (*InvalidNestedDeclarationError) Error

func (*InvalidNestedDeclarationError) IsUserError added in v0.25.0

func (*InvalidNestedDeclarationError) IsUserError()

type InvalidNestedResourceMoveError

type InvalidNestedResourceMoveError struct {
	ast.Range
}

func (*InvalidNestedResourceMoveError) Error

func (*InvalidNestedResourceMoveError) IsUserError added in v0.25.0

func (*InvalidNestedResourceMoveError) IsUserError()

type InvalidNestedTypeError

type InvalidNestedTypeError struct {
	Type *ast.NominalType
}

func (*InvalidNestedTypeError) EndPosition

func (e *InvalidNestedTypeError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*InvalidNestedTypeError) Error

func (e *InvalidNestedTypeError) Error() string

func (*InvalidNestedTypeError) IsUserError added in v0.25.0

func (*InvalidNestedTypeError) IsUserError()

func (*InvalidNestedTypeError) StartPosition

func (e *InvalidNestedTypeError) StartPosition() ast.Position

type InvalidNilCoalescingRightResourceOperandError

type InvalidNilCoalescingRightResourceOperandError struct {
	ast.Range
}

func (*InvalidNilCoalescingRightResourceOperandError) Error

type InvalidNonConformanceRestrictionError

type InvalidNonConformanceRestrictionError struct {
	Type *InterfaceType
	ast.Range
}

func (*InvalidNonConformanceRestrictionError) Error

func (*InvalidNonConformanceRestrictionError) IsUserError added in v0.25.0

type InvalidNonEnumCaseError added in v0.10.0

type InvalidNonEnumCaseError struct {
	ContainerDeclarationKind common.DeclarationKind
	ast.Range
}

func (*InvalidNonEnumCaseError) Error added in v0.10.0

func (e *InvalidNonEnumCaseError) Error() string

func (*InvalidNonEnumCaseError) IsUserError added in v0.25.0

func (*InvalidNonEnumCaseError) IsUserError()

type InvalidNonIdentifierFailableResourceDowncast added in v0.12.0

type InvalidNonIdentifierFailableResourceDowncast struct {
	ast.Range
}

func (*InvalidNonIdentifierFailableResourceDowncast) Error added in v0.12.0

func (*InvalidNonIdentifierFailableResourceDowncast) IsUserError added in v0.25.0

func (*InvalidNonIdentifierFailableResourceDowncast) SecondaryError added in v0.12.0

type InvalidNonImportableTransactionParameterTypeError added in v0.17.0

type InvalidNonImportableTransactionParameterTypeError struct {
	Type Type
	ast.Range
}

func (*InvalidNonImportableTransactionParameterTypeError) Error added in v0.17.0

func (*InvalidNonImportableTransactionParameterTypeError) IsUserError added in v0.25.0

type InvalidOptionalChainingError

type InvalidOptionalChainingError struct {
	Type Type
	ast.Range
}

func (*InvalidOptionalChainingError) Error

func (*InvalidOptionalChainingError) IsUserError added in v0.25.0

func (*InvalidOptionalChainingError) IsUserError()

type InvalidPathDomainError

type InvalidPathDomainError struct {
	ActualDomain string
	ast.Range
}

func (*InvalidPathDomainError) Error

func (e *InvalidPathDomainError) Error() string

func (*InvalidPathDomainError) IsUserError added in v0.25.0

func (*InvalidPathDomainError) IsUserError()

func (*InvalidPathDomainError) SecondaryError

func (e *InvalidPathDomainError) SecondaryError() string

type InvalidPathIdentifierError added in v0.23.0

type InvalidPathIdentifierError struct {
	ActualIdentifier string
	ast.Range
}

func (*InvalidPathIdentifierError) Error added in v0.23.0

type InvalidPragmaError added in v0.7.0

type InvalidPragmaError struct {
	Message string
	ast.Range
}

func (*InvalidPragmaError) Error added in v0.7.0

func (e *InvalidPragmaError) Error() string

func (*InvalidPragmaError) IsUserError added in v0.25.0

func (*InvalidPragmaError) IsUserError()

type InvalidResourceAnnotationError

type InvalidResourceAnnotationError struct {
	ast.Range
}

func (*InvalidResourceAnnotationError) Error

func (*InvalidResourceAnnotationError) IsUserError added in v0.25.0

func (*InvalidResourceAnnotationError) IsUserError()

type InvalidResourceArrayMemberError

type InvalidResourceArrayMemberError struct {
	Name            string
	DeclarationKind common.DeclarationKind
	ast.Range
}

func (*InvalidResourceArrayMemberError) Error

func (*InvalidResourceArrayMemberError) IsUserError added in v0.25.0

func (*InvalidResourceArrayMemberError) IsUserError()

type InvalidResourceAssignmentError

type InvalidResourceAssignmentError struct {
	ast.Range
}

func (*InvalidResourceAssignmentError) Error

func (*InvalidResourceAssignmentError) IsUserError added in v0.25.0

func (*InvalidResourceAssignmentError) IsUserError()

func (*InvalidResourceAssignmentError) SecondaryError added in v0.25.0

func (e *InvalidResourceAssignmentError) SecondaryError() string

type InvalidResourceCreationError

type InvalidResourceCreationError struct {
	Type Type
	ast.Range
}

func (*InvalidResourceCreationError) Error

func (*InvalidResourceCreationError) IsUserError added in v0.25.0

func (*InvalidResourceCreationError) IsUserError()

type InvalidResourceDictionaryMemberError

type InvalidResourceDictionaryMemberError struct {
	Name            string
	DeclarationKind common.DeclarationKind
	ast.Range
}

func (*InvalidResourceDictionaryMemberError) Error

func (*InvalidResourceDictionaryMemberError) IsUserError added in v0.25.0

func (*InvalidResourceDictionaryMemberError) IsUserError()

type InvalidResourceFieldError

type InvalidResourceFieldError struct {
	Name          string
	CompositeKind common.CompositeKind
	Pos           ast.Position
}

func (*InvalidResourceFieldError) EndPosition

func (e *InvalidResourceFieldError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*InvalidResourceFieldError) Error

func (e *InvalidResourceFieldError) Error() string

func (*InvalidResourceFieldError) IsUserError added in v0.25.0

func (*InvalidResourceFieldError) IsUserError()

func (*InvalidResourceFieldError) StartPosition

func (e *InvalidResourceFieldError) StartPosition() ast.Position

type InvalidResourceOptionalMemberError added in v0.9.0

type InvalidResourceOptionalMemberError struct {
	Name            string
	DeclarationKind common.DeclarationKind
	ast.Range
}

func (*InvalidResourceOptionalMemberError) Error added in v0.9.0

func (*InvalidResourceOptionalMemberError) IsUserError added in v0.25.0

func (*InvalidResourceOptionalMemberError) IsUserError()

type InvalidResourceTransactionParameterError

type InvalidResourceTransactionParameterError struct {
	Type Type
	ast.Range
}

func (*InvalidResourceTransactionParameterError) Error

func (*InvalidResourceTransactionParameterError) IsUserError added in v0.25.0

type InvalidRestrictedTypeError

type InvalidRestrictedTypeError struct {
	Type Type
	ast.Range
}

func (*InvalidRestrictedTypeError) Error

func (*InvalidRestrictedTypeError) IsUserError added in v0.25.0

func (*InvalidRestrictedTypeError) IsUserError()

type InvalidRestrictedTypeMemberAccessError

type InvalidRestrictedTypeMemberAccessError struct {
	Name string
	ast.Range
}

func (*InvalidRestrictedTypeMemberAccessError) Error

func (*InvalidRestrictedTypeMemberAccessError) IsUserError added in v0.25.0

type InvalidRestrictionTypeDuplicateError

type InvalidRestrictionTypeDuplicateError struct {
	Type *InterfaceType
	ast.Range
}

func (*InvalidRestrictionTypeDuplicateError) Error

func (*InvalidRestrictionTypeDuplicateError) IsUserError added in v0.25.0

func (*InvalidRestrictionTypeDuplicateError) IsUserError()

type InvalidRestrictionTypeError

type InvalidRestrictionTypeError struct {
	Type Type
	ast.Range
}

func (*InvalidRestrictionTypeError) Error

func (*InvalidRestrictionTypeError) IsUserError added in v0.25.0

func (*InvalidRestrictionTypeError) IsUserError()

type InvalidSelfInvalidationError

type InvalidSelfInvalidationError struct {
	InvalidationKind ResourceInvalidationKind
	ast.Range
}

func (*InvalidSelfInvalidationError) Error

func (*InvalidSelfInvalidationError) IsUserError added in v0.25.0

func (*InvalidSelfInvalidationError) IsUserError()

type InvalidStaticModifierError added in v0.30.0

type InvalidStaticModifierError struct {
	ast.Range
}

func (*InvalidStaticModifierError) Error added in v0.30.0

func (*InvalidStaticModifierError) IsUserError added in v0.30.0

func (*InvalidStaticModifierError) IsUserError()

type InvalidSwapExpressionError

type InvalidSwapExpressionError struct {
	Side common.OperandSide
	ast.Range
}

func (*InvalidSwapExpressionError) Error

func (*InvalidSwapExpressionError) IsUserError added in v0.25.0

func (*InvalidSwapExpressionError) IsUserError()

func (*InvalidSwapExpressionError) SecondaryError

func (e *InvalidSwapExpressionError) SecondaryError() string

type InvalidTopLevelDeclarationError

type InvalidTopLevelDeclarationError struct {
	DeclarationKind common.DeclarationKind
	ast.Range
}

func (*InvalidTopLevelDeclarationError) Error

func (*InvalidTopLevelDeclarationError) IsUserError added in v0.25.0

func (*InvalidTopLevelDeclarationError) IsUserError()

type InvalidTransactionBlockError

type InvalidTransactionBlockError struct {
	Name string
	Pos  ast.Position
}

func (*InvalidTransactionBlockError) EndPosition

func (e *InvalidTransactionBlockError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*InvalidTransactionBlockError) Error

func (*InvalidTransactionBlockError) IsUserError added in v0.25.0

func (*InvalidTransactionBlockError) IsUserError()

func (*InvalidTransactionBlockError) SecondaryError

func (e *InvalidTransactionBlockError) SecondaryError() string

func (*InvalidTransactionBlockError) StartPosition

func (e *InvalidTransactionBlockError) StartPosition() ast.Position

type InvalidTransactionFieldAccessModifierError

type InvalidTransactionFieldAccessModifierError struct {
	Name   string
	Access ast.Access
	Pos    ast.Position
}

func (*InvalidTransactionFieldAccessModifierError) EndPosition

func (*InvalidTransactionFieldAccessModifierError) Error

func (*InvalidTransactionFieldAccessModifierError) IsUserError added in v0.25.0

func (*InvalidTransactionFieldAccessModifierError) StartPosition

type InvalidTransactionPrepareParameterTypeError

type InvalidTransactionPrepareParameterTypeError struct {
	Type Type
	ast.Range
}

func (*InvalidTransactionPrepareParameterTypeError) Error

func (*InvalidTransactionPrepareParameterTypeError) IsUserError added in v0.25.0

type InvalidTypeArgumentCountError

type InvalidTypeArgumentCountError struct {
	TypeParameterCount int
	TypeArgumentCount  int
	ast.Range
}

func (*InvalidTypeArgumentCountError) Error

func (*InvalidTypeArgumentCountError) IsUserError added in v0.25.0

func (*InvalidTypeArgumentCountError) IsUserError()

func (*InvalidTypeArgumentCountError) SecondaryError

func (e *InvalidTypeArgumentCountError) SecondaryError() string

type InvalidUnaryOperandError

type InvalidUnaryOperandError struct {
	ExpectedType Type
	ActualType   Type
	ast.Range
	Operation ast.Operation
}

func (*InvalidUnaryOperandError) Error

func (e *InvalidUnaryOperandError) Error() string

func (*InvalidUnaryOperandError) IsUserError added in v0.25.0

func (*InvalidUnaryOperandError) IsUserError()

func (*InvalidUnaryOperandError) SecondaryError

func (e *InvalidUnaryOperandError) SecondaryError() string

type InvalidVariableKindError

type InvalidVariableKindError struct {
	Kind ast.VariableKind
	ast.Range
}

func (*InvalidVariableKindError) Error

func (e *InvalidVariableKindError) Error() string

func (*InvalidVariableKindError) IsUserError added in v0.25.0

func (*InvalidVariableKindError) IsUserError()

type InvocationExpressionTypes added in v0.26.0

type InvocationExpressionTypes struct {
	ReturnType         Type
	TypeArguments      *TypeParameterTypeOrderedMap
	ArgumentTypes      []Type
	TypeParameterTypes []Type
}

type LocatedType

type LocatedType interface {
	Type
	GetLocation() common.Location
}

LocatedType is a type which has a location

type LocationHandlerFunc added in v0.10.0

type LocationHandlerFunc func(identifiers []ast.Identifier, location common.Location) ([]ResolvedLocation, error)

func AddressLocationHandlerFunc added in v0.25.0

func AddressLocationHandlerFunc(resolveAddressContractNames AddressContractNamesResolver) LocationHandlerFunc

AddressLocationHandlerFunc returns a location handler which returns a single location for non-address locations, and uses the given address contract names resolve function to get all contract names for an address

type Member

type Member struct {
	TypeAnnotation TypeAnnotation
	// Parent type where this member can be resolved
	ContainerType  Type
	DocString      string
	ArgumentLabels []string
	Identifier     ast.Identifier
	Access         ast.Access
	// TODO: replace with dedicated MemberKind enum
	DeclarationKind common.DeclarationKind
	VariableKind    ast.VariableKind
	// Predeclared fields can be considered initialized
	Predeclared       bool
	HasImplementation bool
	// IgnoreInSerialization determines if the field is ignored in serialization
	IgnoreInSerialization bool
}

func NewPublicConstantFieldMember

func NewPublicConstantFieldMember(
	memoryGauge common.MemoryGauge,
	containerType Type,
	identifier string,
	fieldType Type,
	docString string,
) *Member

func NewPublicFunctionMember

func NewPublicFunctionMember(
	memoryGauge common.MemoryGauge,
	containerType Type,
	identifier string,
	functionType *FunctionType,
	docString string,
) *Member

func NewUnmeteredPublicConstantFieldMember added in v0.24.0

func NewUnmeteredPublicConstantFieldMember(
	containerType Type,
	identifier string,
	fieldType Type,
	docString string,
) *Member

func NewUnmeteredPublicFunctionMember added in v0.24.0

func NewUnmeteredPublicFunctionMember(
	containerType Type,
	identifier string,
	functionType *FunctionType,
	docString string,
) *Member

func (*Member) IsExportable added in v0.30.0

func (m *Member) IsExportable(results map[*Member]bool) (result bool)

IsExportable returns whether a member is exportable

func (*Member) IsImportable added in v0.17.0

func (m *Member) IsImportable(results map[*Member]bool) (result bool)

IsImportable returns whether a member can be imported to a program

func (*Member) IsStorable added in v0.5.0

func (m *Member) IsStorable(results map[*Member]bool) (result bool)

IsStorable returns whether a member is a storable field

func (*Member) IsValidEventParameterType added in v0.14.2

func (m *Member) IsValidEventParameterType(results map[*Member]bool) bool

IsValidEventParameterType returns whether has a valid event parameter type

type MemberAccess added in v0.7.0

type MemberAccess struct {
	AccessedType Type
	StartPos     Position
	EndPos       Position
}

type MemberAccesses added in v0.7.0

type MemberAccesses struct {
	// contains filtered or unexported fields
}

func NewMemberAccesses added in v0.7.0

func NewMemberAccesses() *MemberAccesses

func (*MemberAccesses) All added in v0.7.0

func (m *MemberAccesses) All() []MemberAccess

func (*MemberAccesses) Find added in v0.7.0

func (m *MemberAccesses) Find(pos Position) *MemberAccess

func (*MemberAccesses) Put added in v0.7.0

func (m *MemberAccesses) Put(startPos, endPos ast.Position, accessedType Type)

type MemberAccountAccessHandlerFunc added in v0.19.0

type MemberAccountAccessHandlerFunc func(checker *Checker, memberLocation common.Location) bool

type MemberFieldDeclarationOrderedMap added in v0.25.0

type MemberFieldDeclarationOrderedMap = orderedmap.OrderedMap[*Member, *ast.FieldDeclaration]

type MemberInfo

type MemberInfo struct {
	AccessedType Type
	Member       *Member
	IsOptional   bool
}

type MemberMismatch

type MemberMismatch struct {
	CompositeMember *Member
	InterfaceMember *Member
}

type MemberMismatchNote added in v0.2.0

type MemberMismatchNote struct {
	ast.Range
}

func (MemberMismatchNote) Message added in v0.2.0

func (n MemberMismatchNote) Message() string

type MemberResolver added in v0.7.0

type MemberResolver struct {
	Resolve func(
		memoryGauge common.MemoryGauge,
		identifier string,
		targetRange ast.Range,
		report func(error),
	) *Member
	Kind     common.DeclarationKind
	Mutating bool
}

type MissingAccessModifierError

type MissingAccessModifierError struct {
	Explanation     string
	Pos             ast.Position
	DeclarationKind common.DeclarationKind
}

func (*MissingAccessModifierError) EndPosition

func (*MissingAccessModifierError) Error

func (*MissingAccessModifierError) IsUserError added in v0.25.0

func (*MissingAccessModifierError) IsUserError()

func (*MissingAccessModifierError) StartPosition

func (e *MissingAccessModifierError) StartPosition() ast.Position

type MissingArgumentLabelError

type MissingArgumentLabelError struct {
	ExpectedArgumentLabel string
	ast.Range
}

func (*MissingArgumentLabelError) Error

func (e *MissingArgumentLabelError) Error() string

func (*MissingArgumentLabelError) IsUserError added in v0.25.0

func (*MissingArgumentLabelError) IsUserError()

type MissingConformanceError

type MissingConformanceError struct {
	CompositeType *CompositeType
	InterfaceType *InterfaceType
	ast.Range
}

MissingConformanceError

func (*MissingConformanceError) Error

func (e *MissingConformanceError) Error() string

func (*MissingConformanceError) IsUserError added in v0.25.0

func (*MissingConformanceError) IsUserError()

type MissingCreateError

type MissingCreateError struct {
	ast.Range
}

func (*MissingCreateError) Error

func (e *MissingCreateError) Error() string

func (*MissingCreateError) IsUserError added in v0.25.0

func (*MissingCreateError) IsUserError()

func (*MissingCreateError) SecondaryError

func (e *MissingCreateError) SecondaryError() string

type MissingDestructorError

type MissingDestructorError struct {
	ContainerType  Type
	FirstFieldName string
	FirstFieldPos  ast.Position
}

func (*MissingDestructorError) EndPosition

func (e *MissingDestructorError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*MissingDestructorError) Error

func (e *MissingDestructorError) Error() string

func (*MissingDestructorError) IsUserError added in v0.25.0

func (*MissingDestructorError) IsUserError()

func (*MissingDestructorError) StartPosition

func (e *MissingDestructorError) StartPosition() ast.Position

type MissingEntryPointError added in v0.11.0

type MissingEntryPointError struct {
	Expected string
}

func (*MissingEntryPointError) Error added in v0.11.0

func (e *MissingEntryPointError) Error() string

func (*MissingEntryPointError) IsUserError added in v0.25.0

func (*MissingEntryPointError) IsUserError()

type MissingEnumRawTypeError added in v0.10.0

type MissingEnumRawTypeError struct {
	Pos ast.Position
}

func (*MissingEnumRawTypeError) EndPosition added in v0.10.0

func (*MissingEnumRawTypeError) Error added in v0.10.0

func (e *MissingEnumRawTypeError) Error() string

func (*MissingEnumRawTypeError) IsUserError added in v0.25.0

func (*MissingEnumRawTypeError) IsUserError()

func (*MissingEnumRawTypeError) StartPosition added in v0.10.0

func (e *MissingEnumRawTypeError) StartPosition() ast.Position

type MissingFunctionBodyError

type MissingFunctionBodyError struct {
	Pos ast.Position
}

func (*MissingFunctionBodyError) EndPosition

func (*MissingFunctionBodyError) Error

func (e *MissingFunctionBodyError) Error() string

func (*MissingFunctionBodyError) IsUserError added in v0.25.0

func (*MissingFunctionBodyError) IsUserError()

func (*MissingFunctionBodyError) StartPosition

func (e *MissingFunctionBodyError) StartPosition() ast.Position

type MissingInitializerError

type MissingInitializerError struct {
	ContainerType  Type
	FirstFieldName string
	FirstFieldPos  ast.Position
}

func (*MissingInitializerError) EndPosition

func (e *MissingInitializerError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*MissingInitializerError) Error

func (e *MissingInitializerError) Error() string

func (*MissingInitializerError) IsUserError added in v0.25.0

func (*MissingInitializerError) IsUserError()

func (*MissingInitializerError) StartPosition

func (e *MissingInitializerError) StartPosition() ast.Position

type MissingMoveOperationError

type MissingMoveOperationError struct {
	Pos ast.Position
}

func (*MissingMoveOperationError) EndPosition

func (*MissingMoveOperationError) Error

func (e *MissingMoveOperationError) Error() string

func (*MissingMoveOperationError) IsUserError added in v0.25.0

func (*MissingMoveOperationError) IsUserError()

func (*MissingMoveOperationError) StartPosition

func (e *MissingMoveOperationError) StartPosition() ast.Position

type MissingResourceAnnotationError

type MissingResourceAnnotationError struct {
	ast.Range
}

func (*MissingResourceAnnotationError) Error

func (*MissingResourceAnnotationError) IsUserError added in v0.25.0

func (*MissingResourceAnnotationError) IsUserError()

type MissingReturnStatementError

type MissingReturnStatementError struct {
	ast.Range
}

func (*MissingReturnStatementError) Error

func (*MissingReturnStatementError) IsUserError added in v0.25.0

func (*MissingReturnStatementError) IsUserError()

type MissingReturnValueError added in v0.5.0

type MissingReturnValueError struct {
	ExpectedValueType Type
	ast.Range
}

func (*MissingReturnValueError) Error added in v0.5.0

func (e *MissingReturnValueError) Error() string

func (*MissingReturnValueError) IsUserError added in v0.25.0

func (*MissingReturnValueError) IsUserError()

type MissingSwitchCaseStatementsError added in v0.10.0

type MissingSwitchCaseStatementsError struct {
	Pos ast.Position
}

func (*MissingSwitchCaseStatementsError) EndPosition added in v0.10.0

func (*MissingSwitchCaseStatementsError) Error added in v0.10.0

func (*MissingSwitchCaseStatementsError) IsUserError added in v0.25.0

func (*MissingSwitchCaseStatementsError) IsUserError()

func (*MissingSwitchCaseStatementsError) StartPosition added in v0.10.0

func (e *MissingSwitchCaseStatementsError) StartPosition() ast.Position

type MultipleInterfaceDefaultImplementationsError added in v0.26.0

type MultipleInterfaceDefaultImplementationsError struct {
	CompositeType *CompositeType
	Member        *Member
}

MultipleInterfaceDefaultImplementationsError

func (*MultipleInterfaceDefaultImplementationsError) EndPosition added in v0.26.0

func (*MultipleInterfaceDefaultImplementationsError) Error added in v0.26.0

func (*MultipleInterfaceDefaultImplementationsError) IsUserError added in v0.26.0

func (*MultipleInterfaceDefaultImplementationsError) StartPosition added in v0.26.0

type NonReferenceTypeReferenceError

type NonReferenceTypeReferenceError struct {
	ActualType Type
	ast.Range
}

func (*NonReferenceTypeReferenceError) Error

func (*NonReferenceTypeReferenceError) IsUserError added in v0.25.0

func (*NonReferenceTypeReferenceError) IsUserError()

func (*NonReferenceTypeReferenceError) SecondaryError

func (e *NonReferenceTypeReferenceError) SecondaryError() string

type NonResourceTypeError

type NonResourceTypeError struct {
	ActualType Type
	ast.Range
}

func (*NonResourceTypeError) Error

func (e *NonResourceTypeError) Error() string

func (*NonResourceTypeError) IsUserError added in v0.25.0

func (*NonResourceTypeError) IsUserError()

func (*NonResourceTypeError) SecondaryError

func (e *NonResourceTypeError) SecondaryError() string

type NotCallableError

type NotCallableError struct {
	Type Type
	ast.Range
}

func (*NotCallableError) Error

func (e *NotCallableError) Error() string

func (*NotCallableError) IsUserError added in v0.25.0

func (*NotCallableError) IsUserError()

type NotDeclaredError

type NotDeclaredError struct {
	Expression   *ast.IdentifierExpression
	Name         string
	Pos          ast.Position
	ExpectedKind common.DeclarationKind
}

func (*NotDeclaredError) EndPosition

func (e *NotDeclaredError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*NotDeclaredError) Error

func (e *NotDeclaredError) Error() string

func (*NotDeclaredError) IsUserError added in v0.25.0

func (*NotDeclaredError) IsUserError()

func (*NotDeclaredError) SecondaryError

func (e *NotDeclaredError) SecondaryError() string

func (*NotDeclaredError) StartPosition

func (e *NotDeclaredError) StartPosition() ast.Position

type NotDeclaredMemberError

type NotDeclaredMemberError struct {
	Type       Type
	Expression *ast.MemberExpression
	Name       string
	ast.Range
	// contains filtered or unexported fields
}

func (*NotDeclaredMemberError) Error

func (e *NotDeclaredMemberError) Error() string

func (*NotDeclaredMemberError) IsUserError added in v0.25.0

func (*NotDeclaredMemberError) IsUserError()

func (*NotDeclaredMemberError) SecondaryError

func (e *NotDeclaredMemberError) SecondaryError() string

type NotEquatableTypeError

type NotEquatableTypeError struct {
	Type Type
	ast.Range
}

func (*NotEquatableTypeError) Error

func (e *NotEquatableTypeError) Error() string

func (*NotEquatableTypeError) IsUserError added in v0.25.0

func (*NotEquatableTypeError) IsUserError()

type NotExportedError

type NotExportedError struct {
	Name           string
	ImportLocation common.Location
	Available      []string
	Pos            ast.Position
}

func (*NotExportedError) EndPosition

func (e *NotExportedError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*NotExportedError) Error

func (e *NotExportedError) Error() string

func (*NotExportedError) IsUserError added in v0.25.0

func (*NotExportedError) IsUserError()

func (*NotExportedError) SecondaryError added in v0.8.0

func (e *NotExportedError) SecondaryError() string

func (*NotExportedError) StartPosition

func (e *NotExportedError) StartPosition() ast.Position

type NotIndexableTypeError

type NotIndexableTypeError struct {
	Type Type
	ast.Range
}

func (*NotIndexableTypeError) Error

func (e *NotIndexableTypeError) Error() string

func (*NotIndexableTypeError) IsUserError added in v0.25.0

func (*NotIndexableTypeError) IsUserError()

type NotIndexingAssignableTypeError added in v0.7.0

type NotIndexingAssignableTypeError struct {
	Type Type
	ast.Range
}

func (*NotIndexingAssignableTypeError) Error added in v0.7.0

func (*NotIndexingAssignableTypeError) IsUserError added in v0.25.0

func (*NotIndexingAssignableTypeError) IsUserError()

type NumberConversionArgumentTypes added in v0.30.0

type NumberConversionArgumentTypes struct {
	Type  Type
	Range ast.Range
}

type NumericType added in v0.15.0

type NumericType struct {
	// contains filtered or unexported fields
}

NumericType represent all the types in the integer range and non-fractional ranged types.

func NewNumericType added in v0.15.0

func NewNumericType(typeName string) *NumericType

func (*NumericType) AsSuperType added in v0.24.0

func (t *NumericType) AsSuperType() *NumericType

func (*NumericType) Equal added in v0.15.0

func (t *NumericType) Equal(other Type) bool

func (*NumericType) GetMembers added in v0.15.0

func (t *NumericType) GetMembers() map[string]MemberResolver

func (*NumericType) ID added in v0.15.0

func (t *NumericType) ID() TypeID

func (*NumericType) IsEquatable added in v0.15.0

func (*NumericType) IsEquatable() bool

func (*NumericType) IsExportable added in v0.30.0

func (*NumericType) IsExportable(_ map[*Member]bool) bool

func (*NumericType) IsImportable added in v0.17.0

func (t *NumericType) IsImportable(_ map[*Member]bool) bool

func (*NumericType) IsInvalidType added in v0.15.0

func (*NumericType) IsInvalidType() bool

func (*NumericType) IsResourceType added in v0.15.0

func (*NumericType) IsResourceType() bool

func (*NumericType) IsStorable added in v0.15.0

func (*NumericType) IsStorable(_ map[*Member]bool) bool

func (*NumericType) IsSuperType added in v0.24.0

func (t *NumericType) IsSuperType() bool

func (*NumericType) IsType added in v0.15.0

func (*NumericType) IsType()

func (*NumericType) MaxInt added in v0.15.0

func (t *NumericType) MaxInt() *big.Int

func (*NumericType) MinInt added in v0.15.0

func (t *NumericType) MinInt() *big.Int

func (*NumericType) QualifiedString added in v0.15.0

func (t *NumericType) QualifiedString() string

func (*NumericType) Resolve added in v0.15.0

func (*NumericType) RewriteWithRestrictedTypes added in v0.15.0

func (t *NumericType) RewriteWithRestrictedTypes() (result Type, rewritten bool)

func (*NumericType) String added in v0.15.0

func (t *NumericType) String() string

func (*NumericType) SupportsSaturatingAdd added in v0.15.0

func (t *NumericType) SupportsSaturatingAdd() bool

func (*NumericType) SupportsSaturatingDivide added in v0.15.0

func (t *NumericType) SupportsSaturatingDivide() bool

func (*NumericType) SupportsSaturatingMultiply added in v0.15.0

func (t *NumericType) SupportsSaturatingMultiply() bool

func (*NumericType) SupportsSaturatingSubtract added in v0.15.0

func (t *NumericType) SupportsSaturatingSubtract() bool

func (*NumericType) Tag added in v0.24.0

func (t *NumericType) Tag() TypeTag

func (*NumericType) TypeAnnotationState added in v0.15.0

func (*NumericType) TypeAnnotationState() TypeAnnotationState

func (*NumericType) Unify added in v0.15.0

func (*NumericType) Unify(_ Type, _ *TypeParameterTypeOrderedMap, _ func(err error), _ ast.Range) bool

func (*NumericType) WithIntRange added in v0.15.0

func (t *NumericType) WithIntRange(min *big.Int, max *big.Int) *NumericType

func (*NumericType) WithSaturatingAdd added in v0.15.0

func (t *NumericType) WithSaturatingAdd() *NumericType

func (*NumericType) WithSaturatingDivide added in v0.15.0

func (t *NumericType) WithSaturatingDivide() *NumericType

func (*NumericType) WithSaturatingMultiply added in v0.15.0

func (t *NumericType) WithSaturatingMultiply() *NumericType

func (*NumericType) WithSaturatingSubtract added in v0.15.0

func (t *NumericType) WithSaturatingSubtract() *NumericType

func (*NumericType) WithTag added in v0.24.0

func (t *NumericType) WithTag(tag TypeTag) *NumericType

type Occurrence

type Occurrence struct {
	Origin   *Origin
	StartPos Position
	EndPos   Position
}

type Occurrences

type Occurrences struct {
	// contains filtered or unexported fields
}

func NewOccurrences

func NewOccurrences() *Occurrences

func (*Occurrences) All

func (o *Occurrences) All() []Occurrence

func (*Occurrences) Find

func (o *Occurrences) Find(pos Position) *Occurrence

func (*Occurrences) FindAll added in v0.17.0

func (o *Occurrences) FindAll(pos Position) []Occurrence

func (*Occurrences) Put

func (o *Occurrences) Put(startPos, endPos ast.Position, origin *Origin)

type OptionalType

type OptionalType struct {
	Type Type
	// contains filtered or unexported fields
}

OptionalType represents the optional variant of another type

func NewOptionalType added in v0.24.0

func NewOptionalType(memoryGauge common.MemoryGauge, typ Type) *OptionalType

func (*OptionalType) Equal

func (t *OptionalType) Equal(other Type) bool

func (*OptionalType) GetMembers added in v0.7.0

func (t *OptionalType) GetMembers() map[string]MemberResolver

func (*OptionalType) ID

func (t *OptionalType) ID() TypeID

func (*OptionalType) IsEquatable added in v0.7.0

func (t *OptionalType) IsEquatable() bool

func (*OptionalType) IsExportable added in v0.30.0

func (t *OptionalType) IsExportable(results map[*Member]bool) bool

func (*OptionalType) IsImportable added in v0.17.0

func (t *OptionalType) IsImportable(results map[*Member]bool) bool

func (*OptionalType) IsInvalidType

func (t *OptionalType) IsInvalidType() bool

func (*OptionalType) IsResourceType

func (t *OptionalType) IsResourceType() bool

func (*OptionalType) IsStorable added in v0.5.0

func (t *OptionalType) IsStorable(results map[*Member]bool) bool

func (*OptionalType) IsType

func (*OptionalType) IsType()

func (*OptionalType) QualifiedString

func (t *OptionalType) QualifiedString() string

func (*OptionalType) Resolve

func (t *OptionalType) Resolve(typeArguments *TypeParameterTypeOrderedMap) Type

func (*OptionalType) RewriteWithRestrictedTypes added in v0.8.0

func (t *OptionalType) RewriteWithRestrictedTypes() (Type, bool)

func (*OptionalType) String

func (t *OptionalType) String() string

func (*OptionalType) Tag added in v0.24.0

func (t *OptionalType) Tag() TypeTag

func (*OptionalType) TypeAnnotationState

func (t *OptionalType) TypeAnnotationState() TypeAnnotationState

func (*OptionalType) Unify

func (t *OptionalType) Unify(
	other Type,
	typeParameters *TypeParameterTypeOrderedMap,
	report func(err error),
	outerRange ast.Range,
) bool

type Origin

type Origin struct {
	Type            Type
	StartPos        *ast.Position
	EndPos          *ast.Position
	DocString       string
	Occurrences     []ast.Range
	DeclarationKind common.DeclarationKind
}

type Parameter

type Parameter struct {
	TypeAnnotation TypeAnnotation
	Label          string
	Identifier     string
}

func (Parameter) EffectiveArgumentLabel

func (p Parameter) EffectiveArgumentLabel() string

EffectiveArgumentLabel returns the effective argument label that an argument in a call must use: If no argument label is declared for parameter, the parameter name is used as the argument label

func (Parameter) QualifiedString

func (p Parameter) QualifiedString() string

func (Parameter) String

func (p Parameter) String() string

type ParameterizedType added in v0.5.0

type ParameterizedType interface {
	Type
	TypeParameters() []*TypeParameter
	Instantiate(typeArguments []Type, report func(err error)) Type
	BaseType() Type
	TypeArguments() []Type
}

ParameterizedType is a type which might have type parameters

type Position

type Position struct {
	// line number, starting at 1
	Line int
	// column number, starting at 0 (byte count)
	Column int
}

func ASTToSemaPosition added in v0.7.0

func ASTToSemaPosition(position ast.Position) Position

func (Position) Compare

func (pos Position) Compare(other intervalst.Position) int

func (Position) String

func (pos Position) String() string

type PositionInfo added in v0.26.0

type PositionInfo struct {
	Occurrences         *Occurrences
	VariableOrigins     map[*Variable]*Origin
	MemberOrigins       map[Type]map[string]*Origin
	MemberAccesses      *MemberAccesses
	Ranges              *Ranges
	FunctionInvocations *FunctionInvocations
}

func NewPositionInfo added in v0.26.0

func NewPositionInfo() *PositionInfo

type PostConditionsRewrite

type PostConditionsRewrite struct {
	BeforeStatements        []ast.Statement
	RewrittenPostConditions ast.Conditions
}

type PreviousResourceInvalidationNote added in v0.28.0

type PreviousResourceInvalidationNote struct {
	ResourceInvalidation
	ast.Range
}

func (PreviousResourceInvalidationNote) Message added in v0.28.0

type Range added in v0.16.0

type Range struct {
	Type            Type
	Identifier      string
	DocString       string
	DeclarationKind common.DeclarationKind
}

type Ranges added in v0.16.0

type Ranges struct {
	// contains filtered or unexported fields
}

func NewRanges added in v0.16.0

func NewRanges() *Ranges

func (*Ranges) All added in v0.16.0

func (r *Ranges) All() []Range

func (*Ranges) FindAll added in v0.17.0

func (r *Ranges) FindAll(pos Position) []Range

func (*Ranges) Put added in v0.16.0

func (r *Ranges) Put(startPos, endPos ast.Position, ra Range)

type ReadOnlyTargetAssignmentError

type ReadOnlyTargetAssignmentError struct {
	ast.Range
}

func (*ReadOnlyTargetAssignmentError) Error

func (*ReadOnlyTargetAssignmentError) IsUserError added in v0.25.0

func (*ReadOnlyTargetAssignmentError) IsUserError()

type RedeclarationError

type RedeclarationError struct {
	PreviousPos *ast.Position
	Name        string
	Pos         ast.Position
	Kind        common.DeclarationKind
}

func (*RedeclarationError) EndPosition

func (e *RedeclarationError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*RedeclarationError) Error

func (e *RedeclarationError) Error() string

func (*RedeclarationError) ErrorNotes

func (e *RedeclarationError) ErrorNotes() []errors.ErrorNote

func (*RedeclarationError) IsUserError added in v0.25.0

func (*RedeclarationError) IsUserError()

func (*RedeclarationError) StartPosition

func (e *RedeclarationError) StartPosition() ast.Position

type RedeclarationNote

type RedeclarationNote struct {
	ast.Range
}

func (RedeclarationNote) Message

func (n RedeclarationNote) Message() string

type ReferenceType

type ReferenceType struct {
	Type       Type
	Authorized bool
}

ReferenceType represents the reference to a value

func NewReferenceType added in v0.24.0

func NewReferenceType(memoryGauge common.MemoryGauge, typ Type, authorized bool) *ReferenceType

func (*ReferenceType) AllowsValueIndexingAssignment added in v0.7.0

func (t *ReferenceType) AllowsValueIndexingAssignment() bool

func (*ReferenceType) ElementType

func (t *ReferenceType) ElementType(isAssignment bool) Type

func (*ReferenceType) Equal

func (t *ReferenceType) Equal(other Type) bool

func (*ReferenceType) GetMembers added in v0.7.0

func (t *ReferenceType) GetMembers() map[string]MemberResolver

func (*ReferenceType) ID

func (t *ReferenceType) ID() TypeID

func (*ReferenceType) IndexingType

func (t *ReferenceType) IndexingType() Type

func (*ReferenceType) IsEquatable added in v0.7.0

func (*ReferenceType) IsEquatable() bool

func (*ReferenceType) IsExportable added in v0.30.0

func (t *ReferenceType) IsExportable(_ map[*Member]bool) bool

func (*ReferenceType) IsImportable added in v0.17.0

func (t *ReferenceType) IsImportable(_ map[*Member]bool) bool

func (*ReferenceType) IsInvalidType

func (t *ReferenceType) IsInvalidType() bool

func (*ReferenceType) IsResourceType

func (t *ReferenceType) IsResourceType() bool

func (*ReferenceType) IsStorable added in v0.5.0

func (t *ReferenceType) IsStorable(_ map[*Member]bool) bool

func (*ReferenceType) IsType

func (*ReferenceType) IsType()

func (*ReferenceType) QualifiedString

func (t *ReferenceType) QualifiedString() string

func (*ReferenceType) Resolve

func (*ReferenceType) RewriteWithRestrictedTypes added in v0.8.0

func (t *ReferenceType) RewriteWithRestrictedTypes() (Type, bool)

func (*ReferenceType) String

func (t *ReferenceType) String() string

func (*ReferenceType) Tag added in v0.24.0

func (t *ReferenceType) Tag() TypeTag

func (*ReferenceType) TypeAnnotationState

func (*ReferenceType) TypeAnnotationState() TypeAnnotationState

func (*ReferenceType) Unify

func (*ReferenceType) Unify(_ Type, _ *TypeParameterTypeOrderedMap, _ func(err error), _ ast.Range) bool

type ResolvedLocation added in v0.10.0

type ResolvedLocation struct {
	Location    common.Location
	Identifiers []ast.Identifier
}

type Resource added in v0.25.0

type Resource struct {
	Variable *Variable
	Member   *Member
}

A Resource is a variable or a member

type ResourceCapturingError

type ResourceCapturingError struct {
	Name string
	Pos  ast.Position
}

func (*ResourceCapturingError) EndPosition

func (e *ResourceCapturingError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*ResourceCapturingError) Error

func (e *ResourceCapturingError) Error() string

func (*ResourceCapturingError) IsUserError added in v0.25.0

func (*ResourceCapturingError) IsUserError()

func (*ResourceCapturingError) StartPosition

func (e *ResourceCapturingError) StartPosition() ast.Position

type ResourceFieldNotInvalidatedError

type ResourceFieldNotInvalidatedError struct {
	Type      Type
	FieldName string
	Pos       ast.Position
}

func (*ResourceFieldNotInvalidatedError) EndPosition

func (e *ResourceFieldNotInvalidatedError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*ResourceFieldNotInvalidatedError) Error

func (*ResourceFieldNotInvalidatedError) IsUserError added in v0.25.0

func (*ResourceFieldNotInvalidatedError) IsUserError()

func (*ResourceFieldNotInvalidatedError) SecondaryError

func (e *ResourceFieldNotInvalidatedError) SecondaryError() string

func (*ResourceFieldNotInvalidatedError) StartPosition

func (e *ResourceFieldNotInvalidatedError) StartPosition() ast.Position

type ResourceInfo

type ResourceInfo struct {
	Parent *ResourceInfo
	// contains filtered or unexported fields
}

func (*ResourceInfo) Clone added in v0.13.0

func (ris *ResourceInfo) Clone() ResourceInfo

Clone returns a new child resource invalidation set that contains all entries of this parent set. Changes to the returned set will only be applied in the returned set, not the parent.

func (ResourceInfo) DefinitivelyInvalidated

func (ris ResourceInfo) DefinitivelyInvalidated() bool

func (*ResourceInfo) DeleteLocally added in v0.28.0

func (ris *ResourceInfo) DeleteLocally(invalidation ResourceInvalidation)

DeleteLocally removes the given resource invalidation from this current set.

NOTE: the invalidation still might exist in a parent afterwards, i.e. call to Contains might still return true!

func (ResourceInfo) Invalidation added in v0.28.0

func (ris ResourceInfo) Invalidation() *ResourceInvalidation

func (*ResourceInfo) MaybeRecordInvalidation added in v0.28.0

func (ris *ResourceInfo) MaybeRecordInvalidation(invalidation ResourceInvalidation) ResourceInvalidation

MaybeRecordInvalidation records the given resource invalidation, if no invalidation has yet been recorded for the given resource.

type ResourceInvalidation

type ResourceInvalidation struct {
	Kind     ResourceInvalidationKind
	StartPos ast.Position
	EndPos   ast.Position
}

type ResourceInvalidationKind

type ResourceInvalidationKind uint
const (
	ResourceInvalidationKindUnknown ResourceInvalidationKind = iota
	ResourceInvalidationKindMoveDefinite
	ResourceInvalidationKindMovePotential
	ResourceInvalidationKindMoveTemporary
	ResourceInvalidationKindDestroyDefinite
	ResourceInvalidationKindDestroyPotential
)

func (ResourceInvalidationKind) AsPotential added in v0.28.0

func (ResourceInvalidationKind) CoarseNoun added in v0.28.0

func (i ResourceInvalidationKind) CoarseNoun() string

func (ResourceInvalidationKind) CoarsePassiveVerb added in v0.28.0

func (k ResourceInvalidationKind) CoarsePassiveVerb() string

func (ResourceInvalidationKind) DetailedNoun added in v0.28.0

func (k ResourceInvalidationKind) DetailedNoun() string

func (ResourceInvalidationKind) IsDefinite added in v0.5.0

func (k ResourceInvalidationKind) IsDefinite() bool

func (ResourceInvalidationKind) String

func (i ResourceInvalidationKind) String() string

type ResourceLossError

type ResourceLossError struct {
	ast.Range
}

func (*ResourceLossError) Error

func (e *ResourceLossError) Error() string

func (*ResourceLossError) IsUserError added in v0.25.0

func (*ResourceLossError) IsUserError()

type ResourceMethodBindingError

type ResourceMethodBindingError struct {
	ast.Range
}

func (*ResourceMethodBindingError) Error

func (*ResourceMethodBindingError) IsUserError added in v0.25.0

func (*ResourceMethodBindingError) IsUserError()

type ResourceUseAfterInvalidationError

type ResourceUseAfterInvalidationError struct {
	Invalidation ResourceInvalidation
	ast.Range
}

func (*ResourceUseAfterInvalidationError) Error

func (*ResourceUseAfterInvalidationError) ErrorNotes

func (*ResourceUseAfterInvalidationError) IsUserError added in v0.25.0

func (*ResourceUseAfterInvalidationError) IsUserError()

func (*ResourceUseAfterInvalidationError) SecondaryError

func (e *ResourceUseAfterInvalidationError) SecondaryError() string

type Resources

type Resources struct {
	// contains filtered or unexported fields
}

Resources is a map which contains invalidation info for resources.

func NewResources added in v0.13.0

func NewResources() *Resources

func (*Resources) Clone

func (ris *Resources) Clone() *Resources

func (*Resources) ForEach added in v0.10.6

func (ris *Resources) ForEach(f func(resource Resource, info ResourceInfo))

func (*Resources) Get

func (ris *Resources) Get(resource Resource) ResourceInfo

func (*Resources) MaybeRecordInvalidation added in v0.28.0

func (ris *Resources) MaybeRecordInvalidation(resource Resource, invalidation ResourceInvalidation)

MaybeRecordInvalidation records the given resource invalidation, if no invalidation has yet been recorded for the given resource.

func (*Resources) MergeBranches

func (ris *Resources) MergeBranches(
	thenResources *Resources,
	thenReturnInfo *ReturnInfo,
	elseResources *Resources,
	elseReturnInfo *ReturnInfo,
)

MergeBranches merges the given resources from two branches into these resources. Invalidations occurring in both branches are considered definitive, other new invalidations are only considered potential. The else resources are optional.

func (*Resources) Reclaim added in v0.29.0

func (ris *Resources) Reclaim()

func (*Resources) RemoveTemporaryMoveInvalidation added in v0.13.0

func (ris *Resources) RemoveTemporaryMoveInvalidation(resource Resource, invalidation ResourceInvalidation)

RemoveTemporaryMoveInvalidation removes the given invalidation from the set of invalidations for the given resource.

func (*Resources) Size

func (ris *Resources) Size() int

func (*Resources) String

func (ris *Resources) String() string

type RestrictedType

type RestrictedType struct {
	Type Type

	Restrictions []*InterfaceType
	// contains filtered or unexported fields
}

RestrictedType

No restrictions implies the type is fully restricted, i.e. no members of the underlying resource type are available.

func NewRestrictedType added in v0.24.0

func NewRestrictedType(memoryGauge common.MemoryGauge, typ Type, restrictions []*InterfaceType) *RestrictedType

func (*RestrictedType) Equal

func (t *RestrictedType) Equal(other Type) bool

func (*RestrictedType) GetMembers added in v0.7.0

func (t *RestrictedType) GetMembers() map[string]MemberResolver

func (*RestrictedType) ID

func (t *RestrictedType) ID() TypeID

func (*RestrictedType) IsEquatable added in v0.7.0

func (*RestrictedType) IsEquatable() bool

func (*RestrictedType) IsExportable added in v0.30.0

func (t *RestrictedType) IsExportable(results map[*Member]bool) bool

func (*RestrictedType) IsImportable added in v0.17.0

func (t *RestrictedType) IsImportable(results map[*Member]bool) bool

func (*RestrictedType) IsInvalidType

func (t *RestrictedType) IsInvalidType() bool

func (*RestrictedType) IsResourceType

func (t *RestrictedType) IsResourceType() bool

func (*RestrictedType) IsStorable added in v0.5.0

func (t *RestrictedType) IsStorable(results map[*Member]bool) bool

func (*RestrictedType) IsType

func (*RestrictedType) IsType()

func (*RestrictedType) QualifiedString

func (t *RestrictedType) QualifiedString() string

func (*RestrictedType) Resolve

func (*RestrictedType) RestrictionSet

func (t *RestrictedType) RestrictionSet() *InterfaceSet

func (*RestrictedType) RewriteWithRestrictedTypes added in v0.8.0

func (t *RestrictedType) RewriteWithRestrictedTypes() (Type, bool)

func (*RestrictedType) String

func (t *RestrictedType) String() string

func (*RestrictedType) Tag added in v0.24.0

func (t *RestrictedType) Tag() TypeTag

func (*RestrictedType) TypeAnnotationState

func (*RestrictedType) TypeAnnotationState() TypeAnnotationState

func (*RestrictedType) Unify

func (*RestrictedType) Unify(_ Type, _ *TypeParameterTypeOrderedMap, _ func(err error), _ ast.Range) bool

type RestrictionCompositeKindMismatchError

type RestrictionCompositeKindMismatchError struct {
	CompositeKind         common.CompositeKind
	PreviousCompositeKind common.CompositeKind
	ast.Range
}

func (*RestrictionCompositeKindMismatchError) Error

func (*RestrictionCompositeKindMismatchError) IsUserError added in v0.25.0

type RestrictionMemberClashError

type RestrictionMemberClashError struct {
	RedeclaringType       *InterfaceType
	OriginalDeclaringType *InterfaceType
	Name                  string
	ast.Range
}

func (*RestrictionMemberClashError) Error

func (*RestrictionMemberClashError) IsUserError added in v0.25.0

func (*RestrictionMemberClashError) IsUserError()

type ReturnInfo

type ReturnInfo struct {
	// JumpOffsets contains the offsets of all jumps
	// (break or continue statements), potential or definite.
	//
	// If non-empty, indicates that (the branch of) the function
	// contains a potential break or continue statement
	JumpOffsets *persistent.OrderedSet[int]
	// MaybeReturned indicates that (the branch of) the function
	// contains a potentially taken return statement
	MaybeReturned bool
	// DefinitelyReturned indicates that (the branch of) the function
	// contains a definite return statement
	DefinitelyReturned bool
	// DefinitelyHalted indicates that (the branch of) the function
	// contains a definite halt (a function call with a Never return type)
	DefinitelyHalted bool
	// DefinitelyJumped indicates that (the branch of) the function
	// contains a definite break or continue statement
	DefinitelyJumped bool
}

ReturnInfo tracks control-flow information

func NewReturnInfo added in v0.28.0

func NewReturnInfo() *ReturnInfo

func (*ReturnInfo) AddJumpOffset added in v0.28.0

func (ri *ReturnInfo) AddJumpOffset(offset int)

func (*ReturnInfo) Clone

func (ri *ReturnInfo) Clone() *ReturnInfo

func (*ReturnInfo) IsUnreachable added in v0.21.0

func (ri *ReturnInfo) IsUnreachable() bool

func (*ReturnInfo) MaybeJumped added in v0.25.1

func (ri *ReturnInfo) MaybeJumped() bool

func (*ReturnInfo) MergeBranches

func (ri *ReturnInfo) MergeBranches(thenReturnInfo *ReturnInfo, elseReturnInfo *ReturnInfo)

func (*ReturnInfo) MergePotentiallyUnevaluated added in v0.25.1

func (ri *ReturnInfo) MergePotentiallyUnevaluated(temporaryReturnInfo *ReturnInfo)

func (*ReturnInfo) WithNewJumpTarget added in v0.28.0

func (ri *ReturnInfo) WithNewJumpTarget(f func())

type ReturnStatementTypes added in v0.26.0

type ReturnStatementTypes struct {
	ValueType  Type
	ReturnType Type
}

type RuntimeCastTypes added in v0.26.0

type RuntimeCastTypes struct {
	Left  Type
	Right Type
}

type RuntimeTypeConstructor added in v0.24.0

type RuntimeTypeConstructor struct {
	Name      string
	Value     *FunctionType
	DocString string
}

type SaturatingArithmeticType added in v0.15.0

type SaturatingArithmeticType interface {
	Type
	SupportsSaturatingAdd() bool
	SupportsSaturatingSubtract() bool
	SupportsSaturatingMultiply() bool
	SupportsSaturatingDivide() bool
}

SaturatingArithmeticType is a type that supports saturating arithmetic functions

type SemanticError

type SemanticError interface {
	errors.UserError
	ast.HasPosition
	// contains filtered or unexported methods
}

type SignatureAlgorithm added in v0.14.0

type SignatureAlgorithm uint8
const (
	SignatureAlgorithmUnknown SignatureAlgorithm = iota
	SignatureAlgorithmECDSA_P256
	SignatureAlgorithmECDSA_secp256k1
	SignatureAlgorithmBLS_BLS12_381
)
  • Existing stored values use these raw values and should not change

NOTE: only add new algorithms, do *NOT* change existing items, reuse raw values for other items, swap the order, etc.

Existing stored values use these raw values and should not change

IMPORTANT: update SignatureAlgorithms

func (SignatureAlgorithm) DocString added in v0.14.0

func (algo SignatureAlgorithm) DocString() string

func (SignatureAlgorithm) Name added in v0.14.0

func (algo SignatureAlgorithm) Name() string

Name returns the string representation of this signing algorithm.

func (SignatureAlgorithm) RawValue added in v0.14.0

func (algo SignatureAlgorithm) RawValue() uint8

func (SignatureAlgorithm) String added in v0.14.0

func (i SignatureAlgorithm) String() string

type SimpleType added in v0.13.5

type SimpleType struct {
	ValueIndexingInfo ValueIndexingInfo
	IsSuperTypeOf     func(subType Type) bool
	NestedTypes       *StringTypeOrderedMap

	Members       func(*SimpleType) map[string]MemberResolver
	QualifiedName string
	TypeID        TypeID
	Name          string

	Importable bool
	Exportable bool
	Equatable  bool
	Storable   bool
	IsResource bool
	// contains filtered or unexported fields
}

SimpleType represents a simple nominal type.

func (*SimpleType) AllowsValueIndexingAssignment added in v0.13.5

func (t *SimpleType) AllowsValueIndexingAssignment() bool

func (*SimpleType) ElementType added in v0.13.5

func (t *SimpleType) ElementType(isAssignment bool) Type

func (*SimpleType) Equal added in v0.13.5

func (t *SimpleType) Equal(other Type) bool

func (*SimpleType) GetMembers added in v0.13.5

func (t *SimpleType) GetMembers() map[string]MemberResolver

func (*SimpleType) GetNestedTypes added in v0.13.5

func (t *SimpleType) GetNestedTypes() *StringTypeOrderedMap

func (*SimpleType) ID added in v0.13.5

func (t *SimpleType) ID() TypeID

func (*SimpleType) IndexingType added in v0.13.5

func (t *SimpleType) IndexingType() Type

func (*SimpleType) IsContainerType added in v0.20.3

func (t *SimpleType) IsContainerType() bool

func (*SimpleType) IsEquatable added in v0.13.5

func (t *SimpleType) IsEquatable() bool

func (*SimpleType) IsExportable added in v0.30.0

func (t *SimpleType) IsExportable(_ map[*Member]bool) bool

func (*SimpleType) IsImportable added in v0.17.0

func (t *SimpleType) IsImportable(_ map[*Member]bool) bool

func (*SimpleType) IsInvalidType added in v0.13.5

func (t *SimpleType) IsInvalidType() bool

func (*SimpleType) IsResourceType added in v0.13.5

func (t *SimpleType) IsResourceType() bool

func (*SimpleType) IsStorable added in v0.13.5

func (t *SimpleType) IsStorable(_ map[*Member]bool) bool

func (*SimpleType) IsType added in v0.13.5

func (*SimpleType) IsType()

func (*SimpleType) QualifiedString added in v0.13.5

func (t *SimpleType) QualifiedString() string

func (*SimpleType) Resolve added in v0.13.5

func (*SimpleType) RewriteWithRestrictedTypes added in v0.13.5

func (t *SimpleType) RewriteWithRestrictedTypes() (Type, bool)

func (*SimpleType) String added in v0.13.5

func (t *SimpleType) String() string

func (*SimpleType) Tag added in v0.24.0

func (t *SimpleType) Tag() TypeTag

func (*SimpleType) TypeAnnotationState added in v0.13.5

func (*SimpleType) TypeAnnotationState() TypeAnnotationState

func (*SimpleType) Unify added in v0.13.5

func (*SimpleType) Unify(_ Type, _ *TypeParameterTypeOrderedMap, _ func(err error), _ ast.Range) bool

type SpecialFunctionDefaultImplementationError added in v0.26.0

type SpecialFunctionDefaultImplementationError struct {
	Container  ast.Declaration
	Identifier *ast.Identifier
	KindName   string
}

SpecialFunctionDefaultImplementationError

func (*SpecialFunctionDefaultImplementationError) EndPosition added in v0.26.0

func (*SpecialFunctionDefaultImplementationError) Error added in v0.26.0

func (*SpecialFunctionDefaultImplementationError) IsUserError added in v0.26.0

func (*SpecialFunctionDefaultImplementationError) StartPosition added in v0.26.0

type StringImportElementOrderedMap added in v0.13.0

type StringImportElementOrderedMap = orderedmap.OrderedMap[string, ImportElement]

type StringMemberOrderedMap added in v0.13.0

type StringMemberOrderedMap = orderedmap.OrderedMap[string, *Member]

func GetMembersAsMap added in v0.14.0

func GetMembersAsMap(members []*Member) *StringMemberOrderedMap

type StringTypeOrderedMap added in v0.13.0

type StringTypeOrderedMap = orderedmap.OrderedMap[string, Type]

type StringVariableOrderedMap added in v0.13.0

type StringVariableOrderedMap = orderedmap.OrderedMap[string, *Variable]

type SwapStatementTypes added in v0.26.0

type SwapStatementTypes struct {
	LeftType  Type
	RightType Type
}

type SwitchDefaultPositionError added in v0.10.0

type SwitchDefaultPositionError struct {
	ast.Range
}

func (*SwitchDefaultPositionError) Error added in v0.10.0

func (*SwitchDefaultPositionError) IsUserError added in v0.25.0

func (*SwitchDefaultPositionError) IsUserError()

type TransactionMissingPrepareError

type TransactionMissingPrepareError struct {
	FirstFieldName string
	FirstFieldPos  ast.Position
}

func (*TransactionMissingPrepareError) EndPosition

func (e *TransactionMissingPrepareError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*TransactionMissingPrepareError) Error

func (*TransactionMissingPrepareError) IsUserError added in v0.25.0

func (*TransactionMissingPrepareError) IsUserError()

func (*TransactionMissingPrepareError) StartPosition

func (e *TransactionMissingPrepareError) StartPosition() ast.Position

type TransactionType

type TransactionType struct {
	Members           *StringMemberOrderedMap
	Fields            []string
	PrepareParameters []Parameter
	Parameters        []Parameter
}

func (*TransactionType) EntryPointFunctionType

func (t *TransactionType) EntryPointFunctionType() *FunctionType

func (*TransactionType) Equal

func (*TransactionType) Equal(other Type) bool

func (*TransactionType) ExecuteFunctionType

func (*TransactionType) ExecuteFunctionType() *FunctionType

func (*TransactionType) GetMembers added in v0.7.0

func (t *TransactionType) GetMembers() map[string]MemberResolver

func (*TransactionType) ID

func (*TransactionType) ID() TypeID

func (*TransactionType) IsEquatable added in v0.7.0

func (*TransactionType) IsEquatable() bool

func (*TransactionType) IsExportable added in v0.30.0

func (*TransactionType) IsExportable(_ map[*Member]bool) bool

func (*TransactionType) IsImportable added in v0.17.0

func (t *TransactionType) IsImportable(_ map[*Member]bool) bool

func (*TransactionType) IsInvalidType

func (*TransactionType) IsInvalidType() bool

func (*TransactionType) IsResourceType

func (*TransactionType) IsResourceType() bool

func (*TransactionType) IsStorable added in v0.5.0

func (*TransactionType) IsStorable(_ map[*Member]bool) bool

func (*TransactionType) IsType

func (*TransactionType) IsType()

func (*TransactionType) PrepareFunctionType

func (t *TransactionType) PrepareFunctionType() *FunctionType

func (*TransactionType) QualifiedString

func (*TransactionType) QualifiedString() string

func (*TransactionType) Resolve

func (*TransactionType) RewriteWithRestrictedTypes added in v0.8.0

func (t *TransactionType) RewriteWithRestrictedTypes() (Type, bool)

func (*TransactionType) String

func (*TransactionType) String() string

func (*TransactionType) Tag added in v0.24.0

func (t *TransactionType) Tag() TypeTag

func (*TransactionType) TypeAnnotationState

func (*TransactionType) TypeAnnotationState() TypeAnnotationState

func (*TransactionType) Unify

func (*TransactionType) Unify(_ Type, _ *TypeParameterTypeOrderedMap, _ func(err error), _ ast.Range) bool

type Type

type Type interface {
	IsType()
	ID() TypeID
	Tag() TypeTag
	String() string
	QualifiedString() string
	Equal(other Type) bool

	// IsResourceType returns true if the type is itself a resource (a `CompositeType` with resource kind),
	// or it contains a resource type (e.g. for optionals, arrays, dictionaries, etc.)
	IsResourceType() bool

	// IsInvalidType returns true if the type is itself the invalid type (see `InvalidType`),
	// or it contains an invalid type (e.g. for optionals, arrays, dictionaries, etc.)
	IsInvalidType() bool

	// IsStorable returns true if the type is allowed to be a stored,
	// e.g. in a field of a composite type.
	//
	// The check if the type is storable is recursive,
	// the results parameter prevents cycles:
	// it is checked at the start of the recursively called function,
	// and pre-set before a recursive call.
	IsStorable(results map[*Member]bool) bool

	// IsExportable returns true if a value of this type can be exported.
	//
	// The check if the type is exportable is recursive,
	// the results parameter prevents cycles:
	// it is checked at the start of the recursively called function,
	// and pre-set before a recursive call.
	IsExportable(results map[*Member]bool) bool

	// IsImportable returns true if values of the type can be imported to a program as arguments
	IsImportable(results map[*Member]bool) bool

	// IsEquatable returns true if values of the type can be equated
	IsEquatable() bool

	TypeAnnotationState() TypeAnnotationState
	RewriteWithRestrictedTypes() (result Type, rewritten bool)

	// Unify attempts to unify the given type with this type, i.e., resolve type parameters
	// in generic types (see `GenericType`) using the given type parameters.
	//
	// For a generic type, unification assigns a given type with a type parameter.
	//
	// If the type parameter has not been previously unified with a type,
	// through an explicitly provided type argument in an invocation
	// or through a previous unification, the type parameter is assigned the given type.
	//
	// If the type parameter has already been previously unified with a type,
	// the type parameter's unified .
	//
	// The boolean return value indicates if a generic type was encountered during unification.
	// For primitives (e.g. `Int`, `String`, etc.) it would be false, as .
	// For types with nested types (e.g. optionals, arrays, and dictionaries)
	// the result is the successful unification of the inner types.
	//
	// The boolean return value does *not* indicate if unification succeeded or not.
	//
	Unify(
		other Type,
		typeParameters *TypeParameterTypeOrderedMap,
		report func(err error),
		outerRange ast.Range,
	) bool

	// Resolve returns a type that is free of generic types (see `GenericType`),
	// i.e. it resolves the type parameters in generic types given the type parameter
	// unifications of `typeParameters`.
	//
	// If resolution fails, it returns `nil`.
	//
	Resolve(typeArguments *TypeParameterTypeOrderedMap) Type

	GetMembers() map[string]MemberResolver
}

func CheckPathLiteral added in v0.12.0

func CheckPathLiteral(domainString, identifier string, domainRangeThunk, idRangeThunk func() ast.Range) (Type, error)

func CheckRestrictedType added in v0.24.0

func CheckRestrictedType(
	memoryGauge common.MemoryGauge,
	restrictedType Type,
	restrictions []*InterfaceType,
	report func(func(*ast.RestrictedType) error),
) Type

func LeastCommonSuperType added in v0.24.0

func LeastCommonSuperType(types ...Type) Type

func MustInstantiate added in v0.32.0

func MustInstantiate(t ParameterizedType, typeArguments ...Type) Type

func UnwrapOptionalType

func UnwrapOptionalType(ty Type) Type

UnwrapOptionalType returns the type if it is not an optional type, or the inner-most type if it is (optional types are repeatedly unwrapped)

type TypeAnnotation

type TypeAnnotation struct {
	Type       Type
	IsResource bool
}

func NewTypeAnnotation

func NewTypeAnnotation(ty Type) TypeAnnotation

func (TypeAnnotation) Equal

func (a TypeAnnotation) Equal(other TypeAnnotation) bool

func (TypeAnnotation) QualifiedString

func (a TypeAnnotation) QualifiedString() string

func (TypeAnnotation) String

func (a TypeAnnotation) String() string

func (TypeAnnotation) TypeAnnotationState

func (a TypeAnnotation) TypeAnnotationState() TypeAnnotationState

type TypeAnnotationRequiredError added in v0.9.0

type TypeAnnotationRequiredError struct {
	Cause string
	Pos   ast.Position
}

func (*TypeAnnotationRequiredError) EndPosition added in v0.9.0

func (*TypeAnnotationRequiredError) Error added in v0.9.0

func (*TypeAnnotationRequiredError) IsUserError added in v0.25.0

func (*TypeAnnotationRequiredError) IsUserError()

func (*TypeAnnotationRequiredError) StartPosition added in v0.9.0

func (e *TypeAnnotationRequiredError) StartPosition() ast.Position

type TypeAnnotationState

type TypeAnnotationState uint
const (
	TypeAnnotationStateUnknown TypeAnnotationState = iota
	TypeAnnotationStateValid
	TypeAnnotationStateInvalidResourceAnnotation
	TypeAnnotationStateMissingResourceAnnotation
)

func (TypeAnnotationState) String

func (i TypeAnnotationState) String() string

type TypeCheckFunc

type TypeCheckFunc = func() Type

type TypeDeclaration

type TypeDeclaration interface {
	TypeDeclarationName() string
	TypeDeclarationType() Type
	TypeDeclarationKind() common.DeclarationKind
	TypeDeclarationPosition() *ast.Position
}

type TypeID

type TypeID = common.TypeID

type TypeMismatchError

type TypeMismatchError struct {
	ExpectedType Type
	ActualType   Type
	Expression   ast.Expression
	ast.Range
}

func (*TypeMismatchError) Error

func (e *TypeMismatchError) Error() string

func (*TypeMismatchError) IsUserError added in v0.25.0

func (*TypeMismatchError) IsUserError()

func (*TypeMismatchError) SecondaryError

func (e *TypeMismatchError) SecondaryError() string

type TypeMismatchWithDescriptionError

type TypeMismatchWithDescriptionError struct {
	ActualType              Type
	ExpectedTypeDescription string
	ast.Range
}

func (*TypeMismatchWithDescriptionError) Error

func (*TypeMismatchWithDescriptionError) IsUserError added in v0.25.0

func (*TypeMismatchWithDescriptionError) IsUserError()

func (*TypeMismatchWithDescriptionError) SecondaryError

func (e *TypeMismatchWithDescriptionError) SecondaryError() string

type TypeParameter

type TypeParameter struct {
	TypeBound Type
	Name      string
	Optional  bool
}

func (TypeParameter) Equal

func (p TypeParameter) Equal(other *TypeParameter) bool

func (TypeParameter) QualifiedString

func (p TypeParameter) QualifiedString() string

func (TypeParameter) String

func (p TypeParameter) String() string

type TypeParameterTypeInferenceError

type TypeParameterTypeInferenceError struct {
	Name string
	ast.Range
}

func (*TypeParameterTypeInferenceError) Error

func (*TypeParameterTypeInferenceError) IsUserError added in v0.25.0

func (*TypeParameterTypeInferenceError) IsUserError()

type TypeParameterTypeMismatchError

type TypeParameterTypeMismatchError struct {
	TypeParameter *TypeParameter
	ExpectedType  Type
	ActualType    Type
	ast.Range
}

func (*TypeParameterTypeMismatchError) Error

func (*TypeParameterTypeMismatchError) IsUserError added in v0.25.0

func (*TypeParameterTypeMismatchError) IsUserError()

func (*TypeParameterTypeMismatchError) SecondaryError

func (e *TypeParameterTypeMismatchError) SecondaryError() string

type TypeParameterTypeOrderedMap added in v0.13.0

type TypeParameterTypeOrderedMap = orderedmap.OrderedMap[*TypeParameter, Type]

type TypeTag added in v0.24.0

type TypeTag struct {
	// contains filtered or unexported fields
}

TypeTag is a bitmask representation for types. Each type has a unique dedicated bit/bit-pattern in the bitmask. The mask consist of two sections: `lowerMask` and the `upperMask`. Each section can represent 64-types.

func (TypeTag) And added in v0.24.0

func (t TypeTag) And(tag TypeTag) TypeTag

func (TypeTag) BelongsTo added in v0.24.0

func (t TypeTag) BelongsTo(typeTag TypeTag) bool

func (TypeTag) ContainsAny added in v0.24.0

func (t TypeTag) ContainsAny(typeTags ...TypeTag) bool

func (TypeTag) Equals added in v0.24.0

func (t TypeTag) Equals(tag TypeTag) bool

func (TypeTag) Not added in v0.24.0

func (t TypeTag) Not() TypeTag

func (TypeTag) Or added in v0.24.0

func (t TypeTag) Or(tag TypeTag) TypeTag

type UninitializedFieldAccessError

type UninitializedFieldAccessError struct {
	Name string
	Pos  ast.Position
}

func (*UninitializedFieldAccessError) EndPosition

func (e *UninitializedFieldAccessError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*UninitializedFieldAccessError) Error

func (*UninitializedFieldAccessError) IsUserError added in v0.25.0

func (*UninitializedFieldAccessError) IsUserError()

func (*UninitializedFieldAccessError) StartPosition

func (e *UninitializedFieldAccessError) StartPosition() ast.Position

type UninitializedUseError

type UninitializedUseError struct {
	Name string
	Pos  ast.Position
}

func (*UninitializedUseError) EndPosition

func (e *UninitializedUseError) EndPosition(memoryGauge common.MemoryGauge) ast.Position

func (*UninitializedUseError) Error

func (e *UninitializedUseError) Error() string

func (*UninitializedUseError) IsUserError added in v0.25.0

func (*UninitializedUseError) IsUserError()

func (*UninitializedUseError) StartPosition

func (e *UninitializedUseError) StartPosition() ast.Position

type UnknownSpecialFunctionError

type UnknownSpecialFunctionError struct {
	Pos ast.Position
}

func (*UnknownSpecialFunctionError) EndPosition

func (*UnknownSpecialFunctionError) Error

func (*UnknownSpecialFunctionError) IsUserError added in v0.25.0

func (*UnknownSpecialFunctionError) IsUserError()

func (*UnknownSpecialFunctionError) StartPosition

func (e *UnknownSpecialFunctionError) StartPosition() ast.Position

type UnparameterizedTypeInstantiationError added in v0.5.0

type UnparameterizedTypeInstantiationError struct {
	ActualTypeArgumentCount int
	ast.Range
}

func (*UnparameterizedTypeInstantiationError) Error added in v0.5.0

func (*UnparameterizedTypeInstantiationError) IsUserError added in v0.25.0

func (*UnparameterizedTypeInstantiationError) SecondaryError added in v0.5.0

func (e *UnparameterizedTypeInstantiationError) SecondaryError() string

type UnreachableStatementError

type UnreachableStatementError struct {
	ast.Range
}

func (*UnreachableStatementError) Error

func (e *UnreachableStatementError) Error() string

func (*UnreachableStatementError) IsUserError added in v0.25.0

func (*UnreachableStatementError) IsUserError()

func (*UnreachableStatementError) SecondaryError added in v0.31.0

func (e *UnreachableStatementError) SecondaryError() string

type UnresolvedImportError

type UnresolvedImportError struct {
	ImportLocation common.Location
	ast.Range
}

func (*UnresolvedImportError) Error

func (e *UnresolvedImportError) Error() string

func (*UnresolvedImportError) IsUserError added in v0.25.0

func (*UnresolvedImportError) IsUserError()

type UnsupportedOptionalChainingAssignmentError

type UnsupportedOptionalChainingAssignmentError struct {
	ast.Range
}

func (*UnsupportedOptionalChainingAssignmentError) Error

func (*UnsupportedOptionalChainingAssignmentError) IsUserError added in v0.25.0

type UnsupportedOverloadingError

type UnsupportedOverloadingError struct {
	DeclarationKind common.DeclarationKind
	ast.Range
}

func (*UnsupportedOverloadingError) Error

func (*UnsupportedOverloadingError) IsUserError added in v0.25.0

func (*UnsupportedOverloadingError) IsUserError()

type UnsupportedResourceForLoopError

type UnsupportedResourceForLoopError struct {
	ast.Range
}

func (*UnsupportedResourceForLoopError) Error

func (*UnsupportedResourceForLoopError) IsUserError added in v0.25.0

func (*UnsupportedResourceForLoopError) IsUserError()

type ValidTopLevelDeclarationsHandlerFunc added in v0.5.0

type ValidTopLevelDeclarationsHandlerFunc = func(common.Location) []common.DeclarationKind

type ValueDeclaration

type ValueDeclaration interface {
	ValueDeclarationName() string
	ValueDeclarationType() Type
	ValueDeclarationDocString() string
	ValueDeclarationKind() common.DeclarationKind
	ValueDeclarationPosition() *ast.Position
	ValueDeclarationIsConstant() bool
	ValueDeclarationArgumentLabels() []string
}

type ValueIndexableType

type ValueIndexableType interface {
	Type

	AllowsValueIndexingAssignment() bool
	ElementType(isAssignment bool) Type
	IndexingType() Type
	// contains filtered or unexported methods
}

ValueIndexableType is a type which can be indexed into using a value

type ValueIndexingInfo added in v0.13.2

type ValueIndexingInfo struct {
	ElementType                   func(_ bool) Type
	IndexingType                  *NumericType
	IsValueIndexableType          bool
	AllowsValueIndexingAssignment bool
}

type Variable

type Variable struct {
	// Type is the type of the variable
	Type Type
	// Pos is the position where the variable was declared
	Pos        *ast.Position
	Identifier string
	// DocString is the optional docstring
	DocString string
	// ArgumentLabels are the argument labels that must be used in an invocation of the variable
	ArgumentLabels  []string
	DeclarationKind common.DeclarationKind
	// Access is the access modifier
	Access ast.Access
	// ActivationDepth is the depth of scopes in which the variable was declared
	ActivationDepth int
	// IsConstant indicates if the variable is read-only
	IsConstant bool
}

type VariableActivation added in v0.14.0

type VariableActivation struct {
	Parent         *VariableActivation
	LeaveCallbacks []func(EndPositionGetter)
	Depth          int
	// contains filtered or unexported fields
}

An VariableActivation is a map of strings to variables. It is used to represent an active scope in a program, i.e. it is used as a symbol table during semantic analysis.

func NewVariableActivation added in v0.14.0

func NewVariableActivation(parent *VariableActivation) *VariableActivation

NewVariableActivation returns as new activation with the given parent. The parent may be nil.

func (*VariableActivation) Clear added in v0.14.1

func (a *VariableActivation) Clear()

Clear removes all variables from this activation.

func (*VariableActivation) DeclareType added in v0.26.0

func (a *VariableActivation) DeclareType(declaration TypeDeclaration)

func (*VariableActivation) DeclareValue added in v0.26.0

func (a *VariableActivation) DeclareValue(declaration ValueDeclaration)

func (*VariableActivation) Find added in v0.14.0

func (a *VariableActivation) Find(name string) *Variable

Find returns the variable for a given name in the activation. It returns nil if no variable is found.

func (*VariableActivation) ForEach added in v0.14.0

func (a *VariableActivation) ForEach(cb func(string, *Variable) error) error

ForEach calls the given function for each name-variable pair in the activation. It can be used to iterate over all entries of the activation.

func (*VariableActivation) Set added in v0.14.0

func (a *VariableActivation) Set(name string, variable *Variable)

Set sets the given variable.

func (*VariableActivation) SetParent added in v0.14.1

func (a *VariableActivation) SetParent(parent *VariableActivation)

SetParent sets the parent of this activation to the given parent and updates the depth.

type VariableActivations

type VariableActivations struct {
	// contains filtered or unexported fields
}

VariableActivations is a stack of activation records. Each entry represents a new activation record.

The current / most nested activation record can be found at the top of the stack (see function `Current`).

func NewVariableActivations added in v0.14.1

func NewVariableActivations(parent *VariableActivation) *VariableActivations

func (*VariableActivations) Current added in v0.13.3

Current returns the current / most nested activation, which can be found at the top of the stack. It returns nil if there is no active activation.

func (*VariableActivations) DeclareValue added in v0.27.0

func (a *VariableActivations) DeclareValue(declaration ValueDeclaration) (*Variable, error)

func (*VariableActivations) Depth

func (a *VariableActivations) Depth() int

Depth returns the depth (size) of the activation stack.

func (*VariableActivations) Enter

func (a *VariableActivations) Enter()

Enter pushes a new empty activation to the top of the activation stack. The new activation has the current activation as its parent.

func (*VariableActivations) Find

func (a *VariableActivations) Find(name string) *Variable

Find returns the variable for a given name in the current activation. It returns nil if no variable is found or if there is no current activation.

func (*VariableActivations) ForEachVariableDeclaredInAndBelow added in v0.16.0

func (a *VariableActivations) ForEachVariableDeclaredInAndBelow(depth int, f func(name string, value *Variable))

func (*VariableActivations) Leave

func (a *VariableActivations) Leave(getEndPosition func(common.MemoryGauge) ast.Position)

Leave pops the top-most (current) activation from the top of the activation stack.

func (*VariableActivations) Set

func (a *VariableActivations) Set(name string, variable *Variable)

Set sets the variable in the current activation.

type VariableDeclarationTypes added in v0.26.0

type VariableDeclarationTypes struct {
	ValueType       Type
	SecondValueType Type
	TargetType      Type
}

type VariableSizedType

type VariableSizedType struct {
	Type Type
	// contains filtered or unexported fields
}

VariableSizedType is a variable sized array type

func NewVariableSizedType added in v0.24.0

func NewVariableSizedType(memoryGauge common.MemoryGauge, typ Type) *VariableSizedType

func (*VariableSizedType) AllowsValueIndexingAssignment added in v0.7.0

func (*VariableSizedType) AllowsValueIndexingAssignment() bool

func (*VariableSizedType) ElementType

func (t *VariableSizedType) ElementType(_ bool) Type

func (*VariableSizedType) Equal

func (t *VariableSizedType) Equal(other Type) bool

func (*VariableSizedType) GetMembers added in v0.7.0

func (t *VariableSizedType) GetMembers() map[string]MemberResolver

func (*VariableSizedType) ID

func (t *VariableSizedType) ID() TypeID

func (*VariableSizedType) IndexingType

func (t *VariableSizedType) IndexingType() Type

func (*VariableSizedType) IsEquatable added in v0.7.0

func (v *VariableSizedType) IsEquatable() bool

func (*VariableSizedType) IsExportable added in v0.30.0

func (t *VariableSizedType) IsExportable(results map[*Member]bool) bool

func (*VariableSizedType) IsImportable added in v0.17.0

func (t *VariableSizedType) IsImportable(results map[*Member]bool) bool

func (*VariableSizedType) IsInvalidType

func (t *VariableSizedType) IsInvalidType() bool

func (*VariableSizedType) IsResourceType

func (t *VariableSizedType) IsResourceType() bool

func (*VariableSizedType) IsStorable added in v0.5.0

func (t *VariableSizedType) IsStorable(results map[*Member]bool) bool

func (*VariableSizedType) IsType

func (*VariableSizedType) IsType()

func (*VariableSizedType) QualifiedString

func (t *VariableSizedType) QualifiedString() string

func (*VariableSizedType) Resolve

func (t *VariableSizedType) Resolve(typeArguments *TypeParameterTypeOrderedMap) Type

func (*VariableSizedType) RewriteWithRestrictedTypes added in v0.8.0

func (t *VariableSizedType) RewriteWithRestrictedTypes() (Type, bool)

func (*VariableSizedType) String

func (t *VariableSizedType) String() string

func (*VariableSizedType) Tag added in v0.24.0

func (t *VariableSizedType) Tag() TypeTag

func (*VariableSizedType) TypeAnnotationState

func (t *VariableSizedType) TypeAnnotationState() TypeAnnotationState

func (*VariableSizedType) Unify

func (t *VariableSizedType) Unify(
	other Type,
	typeParameters *TypeParameterTypeOrderedMap,
	report func(err error),
	outerRange ast.Range,
) bool

type VirtualImport added in v0.5.0

type VirtualImport struct {
	ValueElements *StringImportElementOrderedMap
	TypeElements  *StringImportElementOrderedMap
}

func (VirtualImport) AllTypeElements added in v0.5.0

func (i VirtualImport) AllTypeElements() *StringImportElementOrderedMap

func (VirtualImport) AllValueElements added in v0.5.0

func (i VirtualImport) AllValueElements() *StringImportElementOrderedMap

func (VirtualImport) IsChecking added in v0.10.0

func (VirtualImport) IsChecking() bool

Source Files

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL