# Compliance Report This section details the current state of each language binding with respect to our standard compliance suite. | number | test | java (97.56%) | golang (78.86%) | Dotnet | Python | | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------------------------------------------- | ------ | ------ | | 1 | asyncOverrides_overrideCallsSuper | 🟢 | [🔴](https://github.com/aws/jsii/issues/2670) | ⭕ | ⭕ | | 2 | [arrayReturnedByMethodCanBeRead]("Array created in the kernel can be queried for its elements") | 🟢 | 🟢 | ⭕ | ⭕ | | 3 | [unionProperties]("Kernel values that accept a union type can be set, and are returned with the concrete type") | 🟢 | 🟢 | ⭕ | ⭕ | | 4 | syncOverrides | 🟢 | 🟢 | ⭕ | ⭕ | | 5 | [useEnumFromScopedModule]("Property that accepts an enum type from a third-party package can be set, and read") | 🟢 | 🟢 | ⭕ | ⭕ | | 6 | [createObjectAndCtorOverloads]("Class can be instantiated with empty and non empty constructor") | 🟢 | ⚪ | ⭕ | ⭕ | | 7 | fail_syncOverrides_callsDoubleAsync_method | 🟢 | 🟢 | ⭕ | ⭕ | | 8 | collectionOfInterfaces_MapOfStructs | 🟢 | 🟢 | ⭕ | ⭕ | | 9 | asyncOverrides_overrideAsyncMethod | 🟢 | [🔴](https://github.com/aws/jsii/issues/2670) | ⭕ | ⭕ | | 10 | [statics]("Static functions can be invoked and accept and return the correct type") | 🟢 | 🟢 | ⭕ | ⭕ | | 11 | [structs_returnedLiteralEqualsNativeBuilt]("A struct returned from the kernel is not distinguishable from a struct created natively") | 🟢 | 🟢 | ⭕ | ⭕ | | 12 | [classesCanSelfReferenceDuringClassInitialization]("Classes can reference other classes during initialization") | 🟢 | 🟢 | ⭕ | ⭕ | | 13 | [canObtainStructReferenceWithOverloadedSetter]("A class with a settable property of a union type can be returned from the kernel") | 🟢 | 🟢 | ⭕ | ⭕ | | 14 | [callbacksCorrectlyDeserializeArguments]("Runtime properly deserializes callback arguments from the kernel") | 🟢 | 🟢 | ⭕ | ⭕ | | 15 | [canUseInterfaceSetters]("Read-write properties generate the corresponding setters in the target language") | 🟢 | 🟢 | ⭕ | ⭕ | | 16 | [propertyOverrides_interfaces]("Target language can override properties of host interfaces") | 🟢 | 🟢 | ⭕ | ⭕ | | 17 | syncOverrides_callsSuper | 🟢 | 🟢 | ⭕ | ⭕ | | 18 | [testJsiiAgent]("Asserts the correct value of the JSII_AGENT env variable for the kernel process") | 🟢 | 🟢 | ⭕ | ⭕ | | 19 | [doNotOverridePrivates_method_private]("Non public methods on the guest class do not override methods in the host class") | 🟢 | 🟢 | ⭕ | ⭕ | | 20 | [pureInterfacesCanBeUsedTransparently]("Guest implementation of a pure host interface can be used by host consumers accepting that interface") | 🟢 | 🟢 | ⭕ | ⭕ | | 21 | [nullShouldBeTreatedAsUndefined]("Null value of target language is treated as undefined by the host") | 🟢 | 🟢 | ⭕ | ⭕ | | 22 | [primitiveTypes]("All Primitive types are set and read with their respective types") | 🟢 | 🟢 | ⭕ | ⭕ | | 23 | [reservedKeywordsAreSlugifiedInClassProperties]("TS code that uses reserved words as class property names get slugified so it is usable in the target language") | 🟢 | ⚪ | ⭕ | ⭕ | | 24 | [objectIdDoesNotGetReallocatedWhenTheConstructorPassesThisOut]("Ensure the JSII kernel can pass 'this' out to JSII remotes from within the constructor") | 🟢 | 🟢 | ⭕ | ⭕ | | 25 | [interfaceBuilder]("Seems to be a duplicate of 'propertyOverrides_interfaces'?") | 🟢 | 🟢 | ⭕ | ⭕ | | 26 | unionTypes | 🟢 | 🟢 | ⭕ | ⭕ | | 27 | arrays | 🟢 | 🟢 | ⭕ | ⭕ | | 28 | staticMapInClassCannotBeModified | 🟢 | ⚪ | ⭕ | ⭕ | | 29 | consts | 🟢 | 🟢 | ⭕ | ⭕ | | 30 | pureInterfacesCanBeUsedTransparently_WhenTransitivelyImplementing | 🟢 | 🟢 | ⭕ | ⭕ | | 31 | reservedKeywordsAreSlugifiedInMethodNames | 🟢 | ⚪ | ⭕ | ⭕ | | 32 | exceptions | 🟢 | 🟢 | ⭕ | ⭕ | | 33 | testLiteralInterface | 🟢 | 🟢 | ⭕ | ⭕ | | 34 | structs_nonOptionalhashCode | 🟢 | ⚪ | ⭕ | ⭕ | | 35 | propertyOverrides_set_throws | 🟢 | 🟢 | ⭕ | ⭕ | | 36 | canLeverageIndirectInterfacePolymorphism | 🟢 | 🟢 | ⭕ | ⭕ | | 37 | fluentApi | 🟢 | ⚪ | ⭕ | ⭕ | | 38 | staticListInClassCanBeReadCorrectly | 🟢 | 🟢 | ⭕ | ⭕ | | 39 | mapReturnedByMethodCannotBeModified | 🟢 | ⚪ | ⭕ | ⭕ | | 40 | receiveInstanceOfPrivateClass | 🟢 | 🟢 | ⭕ | ⭕ | | 41 | staticMapInClassCanBeReadCorrectly | 🟢 | 🟢 | ⭕ | ⭕ | | 42 | testNativeObjectsWithInterfaces | 🟢 | 🟢 | ⭕ | ⭕ | | 43 | doNotOverridePrivates_property_getter_public | 🟢 | 🟢 | ⭕ | ⭕ | | 44 | equalsIsResistantToPropertyShadowingResultVariable | 🟢 | 🟢 | ⭕ | ⭕ | | 45 | listInClassCanBeReadCorrectly | 🟢 | 🟢 | ⭕ | ⭕ | | 46 | useNestedStruct | 🟢 | 🟢 | ⭕ | ⭕ | | 47 | testFluentApiWithDerivedClasses | 🟢 | 🟢 | ⭕ | ⭕ | | 48 | interfacesCanBeUsedTransparently_WhenAddedToJsiiType | 🟢 | 🟢 | ⭕ | ⭕ | | 49 | canOverrideProtectedGetter | 🟢 | 🟢 | ⭕ | ⭕ | | 50 | getAndSetEnumValues | 🟢 | 🟢 | ⭕ | ⭕ | | 51 | structs_nonOptionalequals | 🟢 | 🟢 | ⭕ | ⭕ | | 52 | testInterfaceParameter | 🟢 | 🟢 | ⭕ | ⭕ | | 53 | liftedKwargWithSameNameAsPositionalArg | 🟢 | 🟢 | ⭕ | ⭕ | | 54 | creationOfNativeObjectsFromJavaScriptObjects | 🟢 | [🔴](??) | ⭕ | ⭕ | | 55 | canOverrideProtectedMethod | 🟢 | 🟢 | ⭕ | ⭕ | | 56 | canLoadEnumValues | 🟢 | 🟢 | ⭕ | ⭕ | | 57 | eraseUnsetDataValues | 🟢 | 🟢 | ⭕ | ⭕ | | 58 | maps | 🟢 | 🟢 | ⭕ | ⭕ | | 59 | structs_containsNullChecks | 🟢 | [🔴](https://github.com/aws/jsii/issues/2672) | ⭕ | ⭕ | | 60 | canOverrideProtectedSetter | 🟢 | 🟢 | ⭕ | ⭕ | | 61 | asyncOverrides_callAsyncMethod | 🟢 | [🔴](https://github.com/aws/jsii/issues/2670) | ⭕ | ⭕ | | 62 | nodeStandardLibrary | 🟢 | [🔴](https://github.com/aws/jsii/issues/2670) | ⭕ | ⭕ | | 63 | dates | 🟢 | 🟢 | ⭕ | ⭕ | | 64 | collectionOfInterfaces_ListOfStructs | 🟢 | 🟢 | ⭕ | ⭕ | | 65 | objRefsAreLabelledUsingWithTheMostCorrectType | 🟢 | 🔴 | ⭕ | ⭕ | | 66 | unionPropertiesWithBuilder | 🟢 | 🟢 | ⭕ | ⭕ | | 67 | doNotOverridePrivates_property_getter_private | 🟢 | 🟢 | ⭕ | ⭕ | | 68 | structs_withDiamondInheritance_correctlyDedupeProperties | 🟢 | 🟢 | ⭕ | ⭕ | | 69 | abstractMembersAreCorrectlyHandled | 🟢 | 🟢 | ⭕ | ⭕ | | 70 | doNotOverridePrivates_property_by_name_private | 🟢 | 🟢 | ⭕ | ⭕ | | 71 | testNullIsAValidOptionalMap | 🟢 | 🟢 | ⭕ | ⭕ | | 72 | mapReturnedByMethodCanBeRead | 🟢 | 🟢 | ⭕ | ⭕ | | 73 | structs_multiplePropertiesEquals | 🟢 | 🟢 | ⭕ | ⭕ | | 74 | mapInClassCanBeReadCorrectly | 🟢 | 🟢 | ⭕ | ⭕ | | 75 | staticListInClassCannotBeModified | 🟢 | ⚪ | ⭕ | ⭕ | | 76 | collectionOfInterfaces_MapOfInterfaces | 🟢 | 🟢 | ⭕ | ⭕ | | 77 | asyncOverrides_overrideThrows | 🟢 | [🔴](https://github.com/aws/jsii/issues/2670) | ⭕ | ⭕ | | 78 | callMethods | 🟢 | 🟢 | ⭕ | ⭕ | | 79 | returnAbstract | 🟢 | 🟢 | ⭕ | ⭕ | | 80 | dynamicTypes | 🟢 | 🟢 | ⭕ | ⭕ | | 81 | hashCodeIsResistantToPropertyShadowingResultVariable | 🟢 | ⚪ | ⭕ | ⭕ | | 82 | returnSubclassThatImplementsInterface976 | 🟢 | 🟢 | ⭕ | ⭕ | | 83 | structs_optionalEquals | 🟢 | ⚪ | ⭕ | ⭕ | | 84 | propertyOverrides_get_calls_super | 🟢 | 🟢 | ⭕ | ⭕ | | 85 | unmarshallIntoAbstractType | 🟢 | 🟢 | ⭕ | ⭕ | | 86 | structs_multiplePropertiesHashCode | 🟢 | ⚪ | ⭕ | ⭕ | | 87 | fail_syncOverrides_callsDoubleAsync_propertyGetter | 🟢 | 🟢 | ⭕ | ⭕ | | 88 | propertyOverrides_get_set | 🟢 | 🟢 | ⭕ | ⭕ | | 89 | variadicMethodCanBeInvoked | 🟢 | 🟢 | ⭕ | ⭕ | | 90 | collectionTypes | 🟢 | 🟢 | ⭕ | ⭕ | | 91 | asyncOverrides_overrideAsyncMethodByParentClass | 🟢 | [🔴](https://github.com/aws/jsii/issues/2670) | ⭕ | ⭕ | | 92 | structs_optionalHashCode | 🟢 | ⚪ | ⭕ | ⭕ | | 93 | testStructsCanBeDowncastedToParentType | 🟢 | 🟢 | ⭕ | ⭕ | | 94 | propertyOverrides_get_throws | 🟢 | 🟢 | ⭕ | ⭕ | | 95 | getSetPrimitiveProperties | 🟢 | 🟢 | ⭕ | ⭕ | | 96 | getAndSetNonPrimitiveProperties | 🟢 | 🟢 | ⭕ | ⭕ | | 97 | reservedKeywordsAreSlugifiedInStructProperties | 🟢 | 🟢 | ⭕ | ⭕ | | 98 | fail_syncOverrides_callsDoubleAsync_propertySetter | 🟢 | 🟢 | ⭕ | ⭕ | | 99 | doNotOverridePrivates_method_public | 🟢 | 🟢 | ⭕ | ⭕ | | 100 | testNullIsAValidOptionalList | 🟢 | 🟢 | ⭕ | ⭕ | | 101 | mapInClassCannotBeModified | 🟢 | ⚪ | ⭕ | ⭕ | | 102 | doNotOverridePrivates_property_by_name_public | 🟢 | 🟢 | ⭕ | ⭕ | | 103 | asyncOverrides_twoOverrides | 🟢 | [🔴](https://github.com/aws/jsii/issues/2670) | ⭕ | ⭕ | | 104 | propertyOverrides_set_calls_super | 🟢 | 🟢 | ⭕ | ⭕ | | 105 | iso8601DoesNotDeserializeToDate | 🟢 | 🟢 | ⭕ | ⭕ | | 106 | collectionOfInterfaces_ListOfInterfaces | 🟢 | 🟢 | ⭕ | ⭕ | | 107 | undefinedAndNull | 🟢 | 🟢 | ⭕ | ⭕ | | 108 | structs_serializeToJsii | 🟢 | 🟢 | ⭕ | ⭕ | | 109 | structsAreUndecoratedOntheWayToKernel | 🟢 | 🟢 | ⭕ | ⭕ | | 110 | canObtainReferenceWithOverloadedSetter | 🟢 | 🟢 | ⭕ | ⭕ | | 111 | testJSObjectLiteralToNative | 🟢 | 🟢 | ⭕ | ⭕ | | 112 | structs_stepBuilders | 🟢 | ⚪ | ⭕ | ⭕ | | 113 | classWithPrivateConstructorAndAutomaticProperties | 🟢 | 🟢 | ⭕ | ⭕ | | 114 | arrayReturnedByMethodCannotBeModified | 🟢 | ⚪ | ⭕ | ⭕ | | 115 | correctlyDeserializesStructUnions | 🟢 | 🟢 | ⭕ | ⭕ | | 116 | subclassing | 🟢 | 🟢 | ⭕ | ⭕ | | 117 | testInterfaces | 🟢 | 🟢 | ⭕ | ⭕ | | 118 | [callbackParameterIsInterface]("Validates pure interfaces can be passed to callbacks") | ⭕ | 🟢 | ⭕ | ⭕ | | 119 | [classCanBeUsedWhenNotExpressedlyLoaded]("Validates that types not explicitly loaded by the user can safely be returned by JS code") | 🟢 | 🟢 | ⭕ | ⭕ | | 120 | [downcasting]("Ensures unsafe-cast features work as expected") | ⭕ | 🟢 | ⭕ | ⭕ | | 121 | [strippedDeprecatedMemberCanBeReceived]("Ensures --strip-deprecated does not cause odd runtime errors") | 🟢 | 🟢 | ⭕ | ⭕ | | 122 | [exceptionMessage]("Verifies that custom exception names are correctly forwarded") | 🟢 | 🟢 | ⭕ | ⭕ | | 123 | [voidReturningAsync]("Verifies that returning Promise is correctly handled") | ⭕ | ⭕ | ⭕ | ⭕ |