diff --git a/Package.resolved b/Package.resolved index 68d2f09..2c533ec 100644 --- a/Package.resolved +++ b/Package.resolved @@ -5,8 +5,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-collections", "state" : { - "revision" : "937e904258d22af6e447a0b72c0bc67583ef64a2", - "version" : "1.0.4" + "revision" : "94cf62b3ba8d4bed62680a282d4c25f9c63c2efb", + "version" : "1.1.0" } }, { @@ -14,8 +14,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-syntax", "state" : { - "revision" : "74203046135342e4a4a627476dd6caf8b28fe11b", - "version" : "509.0.0" + "revision" : "fa8f95c2d536d6620cc2f504ebe8a6167c9fc2dd", + "version" : "510.0.1" } }, { @@ -23,8 +23,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/omochi/SwiftTypeReader", "state" : { - "revision" : "d21bbe0e0598d1a9a80718f19ea7081053986e1c", - "version" : "2.7.0" + "revision" : "6a0fe53d83994eb91736ba2028f27eadfde35589", + "version" : "2.10.0" } }, { diff --git a/Package.swift b/Package.swift index b36a7c3..61dfb92 100644 --- a/Package.swift +++ b/Package.swift @@ -12,7 +12,8 @@ let package = Package( ) ], dependencies: [ - .package(url: "https://github.com/omochi/SwiftTypeReader", from: "2.7.0"), + .package(url: "https://github.com/omochi/SwiftTypeReader", from: "2.10.0"), +// .package(path: "../SwiftTypeReader"), .package(url: "https://github.com/omochi/TypeScriptAST", from: "1.8.6"), ], targets: [ diff --git a/Sources/CodableToTypeScript/TypeConverter/StructConverter.swift b/Sources/CodableToTypeScript/TypeConverter/StructConverter.swift index a9061bf..09880be 100644 --- a/Sources/CodableToTypeScript/TypeConverter/StructConverter.swift +++ b/Sources/CodableToTypeScript/TypeConverter/StructConverter.swift @@ -23,7 +23,7 @@ public struct StructConverter: TypeConverter { var fields: [TSObjectType.Field] = [] try withErrorCollector { collect in - for property in decl.storedProperties { + for property in decl.storedProperties.instances { collect(at: "\(property.name)") { let (type, isOptional) = try generator.converter(for: property.interfaceType) .fieldType(for: target) @@ -66,7 +66,7 @@ public struct StructConverter: TypeConverter { var result: [CodecPresence] = [.identity] try withErrorCollector { collect in - for p in decl.storedProperties { + for p in decl.storedProperties.instances { collect(at: "\(p.name)") { let converter = try generator.converter(for: p.interfaceType.subst(map: map)) result.append(try converter.decodePresence()) @@ -82,7 +82,7 @@ public struct StructConverter: TypeConverter { var fields: [TSObjectExpr.Field] = [] try withErrorCollector { collect in - for field in decl.storedProperties { + for field in decl.storedProperties.instances { var expr: any TSExpr = TSMemberExpr( base: TSIdentExpr.json, name: field.name @@ -101,7 +101,7 @@ public struct StructConverter: TypeConverter { } } - for field in decl.storedProperties { + for field in decl.storedProperties.instances { let expr = TSIdentExpr(TSKeyword.escaped(field.name)) fields.append( @@ -124,7 +124,7 @@ public struct StructConverter: TypeConverter { var result: [CodecPresence] = [.identity] try withErrorCollector { collect in - for p in decl.storedProperties { + for p in decl.storedProperties.instances { collect(at: "\(p.name)") { let converter = try generator.converter(for: p.interfaceType.subst(map: map)) result.append(try converter.encodePresence()) @@ -139,7 +139,7 @@ public struct StructConverter: TypeConverter { var fields: [TSObjectExpr.Field] = [] - for field in decl.storedProperties { + for field in decl.storedProperties.instances { var expr: any TSExpr = TSMemberExpr( base: TSIdentExpr.entity, name: field.name @@ -156,7 +156,7 @@ public struct StructConverter: TypeConverter { function.body.elements.append(def) } - for field in decl.storedProperties { + for field in decl.storedProperties.instances { let expr = TSIdentExpr(TSKeyword.escaped(field.name)) fields.append( diff --git a/Tests/CodableToTypeScriptTests/Generate/GenerateStructTests.swift b/Tests/CodableToTypeScriptTests/Generate/GenerateStructTests.swift index acbc875..76e9322 100644 --- a/Tests/CodableToTypeScriptTests/Generate/GenerateStructTests.swift +++ b/Tests/CodableToTypeScriptTests/Generate/GenerateStructTests.swift @@ -371,4 +371,40 @@ struct S { """) ) } + + func testStaticProperty() throws { + try assertGenerate( + source: """ +struct S { + static var k: Int = 0 + + var a: Int +} +""", + expecteds: [""" +export type S = { + a: number; +} & TagRecord<"S">; +""" + ] + ) + } + + func testUnknownStaticProperty() throws { + try assertGenerate( + source: """ +struct S { + static var k: Unknown = 0 + + var a: Int +} +""", + expecteds: [""" +export type S = { + a: number; +} & TagRecord<"S">; +""" + ] + ) + } }