Briefcases bug with DA Cached Calculated Fields

Yep, it’s the one from RemObjects Remoting SDK for Fire - 10.0.0.1468.fireplugin, dated 20200210-114449 (61a4436) and the build log is here (though built with Fire.2479 as found another error not logged yet as I need to get some stuff done today but I’ll have another look with that if it helps) debuglog.txt (33.2 KB)

                 Reference: /Users/Jeremy/Library/Application Support/RemObjects Software/Elements/Fire/Plugins/Data Abstract.firepluginfolder/Toffee/iOS/libDataAbstract.fx
                  Reference: /Volumes/Fire 10.0.0.2479/Fire.app/Contents/Resources/Reference Paths/Toffee/../../References/Toffee/iOS/libsqlite3.fx
                  Reference: /Volumes/Fire 10.0.0.2479/Fire.app/Contents/Resources/Reference Paths/Toffee/../../References/Toffee/iOS/libToffee.fx
                  Reference: /Volumes/Fire 10.0.0.2479/Fire.app/Contents/Resources/Reference Paths/Toffee/../../References/Toffee/iOS/libxml2.fx

hmm, that does look good. I’ll try and repro here…

Similar in .2483:

              Reference: /Applications/Fire.app/Contents/Resources/Reference Paths/Toffee/../../References/Toffee/iOS/libsqlite3.fx
              Reference: /Applications/Fire.app/Contents/Resources/Reference Paths/Toffee/../../References/Toffee/iOS/libToffee.fx
              Reference: /Applications/Fire.app/Contents/Resources/Reference Paths/Toffee/../../References/Toffee/iOS/libxml2.fx
              Reference: /Applications/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/AudioToolbox.fx
              Reference: /Applications/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/AVFoundation.AVFAudio.fx
              Reference: /Applications/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/AVFoundation.fx
              Reference: /Applications/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/CoreGraphics.fx
              Reference: /Applications/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/CoreLocation.fx
              Reference: /Applications/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/Foundation.fx
              Reference: /Applications/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/rtl-12.0.fx
              Reference: /Applications/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/Security.fx
              Reference: /Applications/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/SystemConfiguration.fx
              Reference: /Applications/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/UIKit.fx
              Reference: /Users/Jeremy/Library/Application Support/RemObjects Software/Elements/Fire/Plugins/Data Abstract.firepluginfolder/Toffee/iOS/libDataAbstract.fx
              Reference: /Applications/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/CoreFoundation.fx (implicit)

Curious. I just build a new version, and it works fine for me:

                  Reference: /Users/mh/ci2/b/rofx-xcode/937/Bin/FXs/Debug/Toffee/iOS/libDataAbstract.fx
                  Reference: /Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Reference Paths/Toffee/../../References/Toffee/iOS/libElements.fx
                  Reference: /Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Reference Paths/Toffee/../../References/Toffee/iOS/libSwift.fx
                  Reference: /Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Reference Paths/Toffee/../../References/Toffee/iOS/libToffee.fx
                  Reference: /Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/CoreGraphics.fx
                  Reference: /Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/Foundation.fx
                  Reference: /Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/rtl.fx
                  Reference: /Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/UIKit.fx
                  Reference: /Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/CoreFoundation.fx (implicit)
                  Reference: /Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Toffee SDKs/iOS 13.2/Security.fx (implicit)
                  Reference: /Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Reference Paths/Toffee/../../References/Toffee/iOS/libxml2.fx (implicit)

...

D:             Link for Toffee-iOS
D:               - <Link-Device: Elements [Target: Toffee-iOS]>
D:               - <Link-Device: Swift [Target: Toffee-iOS]>
D:               - <Link-Device: Toffee [Target: Toffee-iOS]>
D:               - <Link-Device: CoreGraphics.framework [Target: Toffee-iOS]>
D:               - <Link-Device: Foundation.framework [Target: Toffee-iOS]>
D:               - <Link-Device: UIKit.framework [Target: Toffee-iOS]>
D:               - <Link-Device: CoreFoundation.framework [Target: Toffee-iOS]>
D:               - <Link-Device: Security.framework [Target: Toffee-iOS]>
D:               - <Link-Device: xml2 [Target: Toffee-iOS]>
D:               - <Link-Device: UserNotifications.framework [Target: Toffee-iOS]>
D:               - <Link-Device: CloudKit.framework [Target: Toffee-iOS]>
D:               - <Link-Device: QuartzCore.framework [Target: Toffee-iOS]>
D:               - <Link-Device: Intents.framework [Target: Toffee-iOS]>
D:               - <Link-Device: /Users/mh/ci2/b/rofx-xcode/937/Bin/FXs/Debug/Toffee/iOS/libDataAbstract.a [Target: Toffee-iOS]>

adds Security and libxml2, not libxml.

I’ll upload a new zip from the DA/Xcode build for you now (and a full bistro once the next DA/Windows build is done and has it. Uploading to hcd.

I’ve just tried that (with both int/ext compilers) and firstly there were some issues with the RODL which I got passed by removing the overrides, but this screenshot shows you what happens when I update the interface file and just remove the first one (i.e. initially they say there’s no matching method to override and without them it says it hides a parent method):


When I remove all the overrides to let it progress, then it fails with other errors as per here debuglog.txt (53.4 KB)

The reference I added was DAC-Elements/Debug/Toffee/iOS/libDataAbstract.fx

This is repeatable on any of my DA projects and I also just replicated it with your PCTradeClient iOS sample. It does seem to resolve the libxml issue though, so that’s nice :wink:

Ok, that seems like an entirely new issue though? I take it the XML thing is fixed?

As for this error — no clue; nothing changed there really. any chance I could see a complete testcase (can be just our int, none of the real code)? As for the IE — definitely a compiler bout,and I;ll need a testcase for that as well, I’m afraid.

That should be good, yes.

It looks like that’s the case, as the build process went past that point.

Well, if you build thisArchive.zip (383.5 KB) you should see the error (my log debuglog.txt of it)

If you need another test case, I can DM you the full project, but just got to nip out for a bit (moving server stuff back to regular office after we were flooded a week ago - I’ve been working at home since!)

ok, not builds clean with my (very old) local DA copy. Updating now… and I can repro the IE, yes :(.

bugs://83949: Toffee: Regression: IE with new DA.fx import.

Unfortunately with that it’s out of my hand, as its a compiler bug; Carlo will have to have a look, hopefully tomorrow.

Note that this doesn’t cover the “override” issue yet, just the IE. I’ll need some more to understand/reproduce the other part.

Narrowed the issue way down, though. reducing the project to just

namespace PCTradeClient;

uses
  DataAbstract,
  Foundation;

type
  DataAccess = class(IDARemoteDataAdapterDelegate)
 
  public
    property Orders: DADataTable public read private write;
  end;

end.

shows the IE. Hopefully that’ll make it an easy-to-track-down fix.

let me know if I can build a test case to show it. Essentially, it’s just any use of an array in a service method. For example, add this to a DA server in Water:

 [ServiceMethod]
    method getMedicationHistory(const clientsIndex:String):array of medsHistoryClass;
    begin
      exit medsManager.sharedInstance.getHistoryMeds(clientsIndex);
    end;

And the definition of the medsHistoryClass is something like:

type
  medsHistoryClass = public class(ComplexType)
  private
  protected
  public
    property idmedicationAdmin:String;
    //etc
  end;

Then when the interface is created again in Fire, it becomes:

medsHistoryClassArray = public class(ROMutableArray)
  public
    property itemClass: not nullable &Class read typeOf(not nullable medsHistoryClass); override;
    method writeItem(aItem: not nullable dynamic) toMessage(aMessage: not nullable ROMessage) withIndex(aIndex: NSUInteger); override;
    method readItemFromMessage(aMessage: not nullable ROMessage) withIndex(aIndex: NSUInteger): nullable dynamic; override;
  end;

and the override on the itemClass property is the problem.

Fixed compiler side for the next build.

Thanks, all good.

1 Like

btw, compiler IE, and the original problem all tested, thanks, so it’s only the additional overrides issue left, not sure if that’s been looked at yet as I’m still on the 18th Feb DA build where I noticed it.

Hmm, that’s strange, coz the base class does have that:

@property (readonly, nonnull) Class itemClass;

More oddly, it doesnt happen with 10.0.0.1463 (which fails on link of course).

ahh, yes. it seems that the Objective-C importer loses the nullability. the real issue is not the override, its the type:

// E385 The method "method itemClass: not nullable Class" does not match that found in the base class ("method itemClass: Class")
// H17 Return value does not match, is "not nullable Class, should be "Class"

I’ve logged a HI issue. bugs://83984: HI regression: non-null properties lose nullability info

1 Like

Confirmed fixed for the RO/DA build coming out later today.

1 Like

All tested with that build and everything is good, thanks for your help with all this :wink:

1 Like

Happy to hear!