Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[SR-7210] Codable decoder issue when inheriting from a Class conforming to Codable #49758

swift-ci opened this issue Mar 15, 2018 · 3 comments


Copy link

@swift-ci swift-ci commented Mar 15, 2018

Previous ID SR-7210
Radar rdar://problem/34819823
Original Reporter barakrl (JIRA User)
Type Bug
Status Reopened

Attachment: Download


Version 9.2 (9C40b)

Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug, Codable
Assignee @itaiferber
Priority Medium

md5: a81e1c99a230bb85f5defb9c13fedb34

relates to:

  • SR-7090 Crashing with EXC_BAD_ACCESS after decoding Codable subclass

Issue Description:

When a class inherits from a base class that conforms to Codable, the decoding is not executed (more on that below) and the returned object has the default properties values.

class BaseClass: Codable {}

class MyClass: BaseClass {

    enum CodingKeys: String, CodingKey {
        case objectId = "id"
        case name
    var objectId: Int = -1
    var name: String = ""

let dataString = "{\"id\":123,\"name\":\"test object\"}"
let data = .utf8)!

do {
    let object = try JSONDecoder().decode(MyClass.self, from: data)
    print(object.objectId) //outputs -1 or BAD_ACCESS (and not 123 as expected)
catch {

But, if I use either:

protocol Base: Codable { //protocol "base"

class MyClass: BaseClass {

The decoding is preformed as expected.

Copy link
Collaborator Author

@swift-ci swift-ci commented Mar 15, 2018

Comment by Barak Harel (JIRA)

It's probably a duplicate of SR-7090, but not 100% sure.

Copy link

@belkadan belkadan commented Mar 16, 2018

Huh. @itaiferber, it looks like there's no JIRA for just the very base issue yet. I know you do have a Radar for it.

Copy link

@itaiferber itaiferber commented Mar 16, 2018

This is a combination of two issues. The EXC_BAD_ACCESS is indeed SR-7090 & co.; the display of -1 would be caused by MyClass inheriting Codable from BaseClass, since we can't re-synthesize. That issue is being tracked by the now associated Radar; we need to make it clearer that that's what's happening — likely have a warning (with a mechanism to disable) that lets you know what's going on.

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet

No branches or pull requests

3 participants