diff --git a/ets2panda/compiler/core/ETSemitter.cpp b/ets2panda/compiler/core/ETSemitter.cpp index 98dd37c7b53f0ccc48c49b951b4355d14f7e5826..6eba5e17531bd9f9803453da1d8369026d5417a1 100644 --- a/ets2panda/compiler/core/ETSemitter.cpp +++ b/ets2panda/compiler/core/ETSemitter.cpp @@ -437,11 +437,14 @@ void ETSEmitter::GenClassField(const ir::ClassProperty *prop, pandasm::Record &c field.type = PandasmTypeWithRank(prop->TsType()); field.metadata->SetAccessFlags(TranslateModifierFlags(prop->Modifiers())); + if (!external) { + field.metadata->SetAnnotations(GenCustomAnnotations(prop->Annotations(), field.name)); + } + if (external || prop->IsDeclare()) { field.metadata->SetAttribute(Signatures::EXTERNAL); } else if (prop->TsType()->IsETSPrimitiveType() || prop->TsType()->IsETSStringType()) { EmitDefaultFieldValue(field, prop->Value()); - field.metadata->SetAnnotations(GenCustomAnnotations(prop->Annotations(), field.name)); } classRecord.fieldList.emplace_back(std::move(field)); diff --git a/ets2panda/test/runtime/ets/AnnotationOfClassPropertyInherit.ets b/ets2panda/test/runtime/ets/AnnotationOfClassPropertyInherit.ets index f7f39edabb87d52a23d71d18bb2eba8e5f0be4a5..1a10d2134be2646c72454db08b1a3a747af61da3 100644 --- a/ets2panda/test/runtime/ets/AnnotationOfClassPropertyInherit.ets +++ b/ets2panda/test/runtime/ets/AnnotationOfClassPropertyInherit.ets @@ -13,12 +13,12 @@ * limitations under the License. */ -@interface JSONRename { +@interface JSONRenameTest { name:string = "" } class A { - @JSONRename("ID") + @JSONRenameTest("ID") name2: string = "" pwd2: string = "" }