Git Product home page Git Product logo

Comments (10)

shoumikhin avatar shoumikhin commented on April 28, 2024 1

Would you mind to make a small text case demonstrating the issue?
May just edit one of the test files we already have, like Promise+ThenInteroperabilityTests.swift, or create a custom one.
Happy to play with it and see if we can do better.

from promises.

aufflick avatar aufflick commented on April 28, 2024

Interesting, a reduced example doesn't cause the compiler crash. I was thinking it might be getting confused by the re-use of Value, but in simpler cases it doesn't seem to be the case.

from promises.

shoumikhin avatar shoumikhin commented on April 28, 2024

Hi Mark,

What if you try something like:

@objc
public func allFoo() -> Promise<[Foo]>.ObjCPromise<NSArray> {
  return promiseSwiftArrayOfFoo().asObjCPromise()
}

from promises.

aufflick avatar aufflick commented on April 28, 2024

That was actually what I was doing - I simplified it to use the map in case that helped, both crash in my code.

What does seem to work though is explicitly using FBLPromise<NSArray> as the return type. Compiles fine, haven't tested it yet.

from promises.

shoumikhin avatar shoumikhin commented on April 28, 2024

Sorry, I think there must be an @objc qualifier in the example above. Corrected.
Let us know what solutions works for you eventually.

Another idea that may come handy - a way to have both methods in one class and call different one from Swift and Objective-C respectively:

public func allFoo() -> Promise<[Foo]> {
  return promiseSwiftArrayOfFoo()
}

@objc
public func objc_allFoo() -> Promise<[Foo]>.ObjCPromise<NSArray> {
  return allFoo().asObjCPromise()
}

from promises.

aufflick avatar aufflick commented on April 28, 2024

Ok, so a current workaround is:

import Promises
import FBLPromise

  @objc
  public func allFoo() -> FBLPromise<NSArray>
  {
    return promiseSwiftArrayOfFoo().asObjCPromise()
  }

Despite requiring the extra import, this actually reads a bit cleaner, so I'm ok with it. Of course swiftc shouldn't crash, and I'll keep trying to make a reduced sample that does trigger the crash.

from promises.

shoumikhin avatar shoumikhin commented on April 28, 2024

Interesting... So you mean if you replace Promise<[Foo]>.ObjCPromise<NSArray> return type with FBLPromise<NSArray>, it does fix the crash?

from promises.

aufflick avatar aufflick commented on April 28, 2024

Yes.

from promises.

aufflick avatar aufflick commented on April 28, 2024

The crash is in the name mangling/compression code when swiftc is generating the ObjC header, so it sort of makes sense. When the type is a plain ObjC type that code doesn't need to run, it can just use the ObjC type directly.

from promises.

 avatar commented on April 28, 2024

Hey Mark, going to close this issue for now. Feel free to reopen if you have any additional details or can provide a simple test case that repros the issue. Thank you!

from promises.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.