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

Errors when creating some types withouth dot #60

Closed
D00mch opened this issue May 7, 2022 · 11 comments
Closed

Errors when creating some types withouth dot #60

D00mch opened this issue May 7, 2022 · 11 comments

Comments

@D00mch
Copy link
Contributor

D00mch commented May 7, 2022

Can't crate custom objects (from detype).
Can't crate m/Duration object.
Can't set values without dash.

(ns acme.main
  (:require
   ["package:flutter/material.dart" :as m]))

(deftype Cat [name])

(defn ^m/Widget accounts-page [_]
  (m/Scaffold
    :backgroundColor m.Colors/green
    :body (m/Center
            :child (m/Text (str "Name: " (Cat. "jee")
                                (m/Duration.)
                                #_(Cat "bob")          ;; uncomment to reproduce first bug
                                #_(m/Duration))))))    ;; uncomment to reproduce second bug

(let [^#/(m/ValueNotifier bool) close-hint (m/ValueNotifier false)]
  (set! (.-value close-hint) false)
  #_(set! (.value close-hint) false)) ;; uncomment to reproduce third bug

(defn main []
  (m/runApp
    (m/MaterialApp
      :title "Welcome to Flutter"
      :theme (m/ThemeData :primarySwatch m.Colors/pink)
      :initialRoute "/" 
      :routes {"/" accounts-page})))
@D00mch
Copy link
Contributor Author

D00mch commented May 7, 2022

:sha "3b90d331ef52e2e8cd93b299da0127b59fe97428"

@cgrand
Copy link
Contributor

cgrand commented May 7, 2022

Duration Is in dart:core not material. No?

@D00mch
Copy link
Contributor Author

D00mch commented May 8, 2022

I checked (core/Duration) and it works.
And somehow it works with the dot with material too (m/Duration.).

cgrand added a commit that referenced this issue May 8, 2022
@cgrand
Copy link
Contributor

cgrand commented May 8, 2022

Can't crate custom objects (from detype).

Fixed

And somehow it works with the dot with material too (m/Duration.).

Not investigated but plain weird.

Can't set values without dash.

Fixed but emit-set needs work it's still type-oblivious.

@D00mch
Copy link
Contributor Author

D00mch commented May 9, 2022

With the lates commit (don't know about previous) I have some more errors:

(defn not-future [] 
  (MapEntry "key" "value"))

(defn init [] ;; call this from main
  (.value (MapEntry "key" "value")) ;; no error
  (.-value (not-future))) ;; error if remove dash

@D00mch
Copy link
Contributor Author

D00mch commented May 9, 2022

logs ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════ The following NoSuchMethodError was thrown building Builder(dirty): Class 'String' has no instance method 'call'. Receiver: "value" Tried calling: call()

The relevant error-causing widget was:
MaterialApp
MaterialApp:file:///Users/m1/IdeaProjects/clojure/lconvex/lib/cljd-out/lconvex/main.dart:30:37

When the exception was thrown, this was the stack:
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:38:5)
#1 init (package:lconvex/cljd-out/lconvex/sdk.dart:20:36)
#2 accounts_page (package:lconvex/cljd-out/lconvex/main.dart:12:15)
#3 MaterialPageRoute.buildContent (package:flutter/src/material/page.dart:53:55)
#4 MaterialRouteTransitionMixin.buildPage (package:flutter/src/material/page.dart:106:27)
#5 _ModalScopeState.build.. (package:flutter/src/widgets/routes.dart:872:55)
#6 Builder.build (package:flutter/src/widgets/basic.dart:7398:48)
#7 StatelessElement.build (package:flutter/src/widgets/framework.dart:4827:28)
#8 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4754:15)
#9 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#10 StatelessElement.update (package:flutter/src/widgets/framework.dart:4834:5)
#11 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#12 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6291:14)
#13 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#14 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6291:14)
#15 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#16 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#17 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
#18 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#19 StatefulElement.update (package:flutter/src/widgets/framework.dart:4960:5)
#20 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#21 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6291:14)
#22 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#23 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6291:14)
#24 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#25 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#26 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
#27 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#28 StatefulElement.update (package:flutter/src/widgets/framework.dart:4960:5)
#29 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#30 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#31 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#32 StatelessElement.update (package:flutter/src/widgets/framework.dart:4834:5)
#33 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#34 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#35 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
#36 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#37 StatefulElement.update (package:flutter/src/widgets/framework.dart:4960:5)
#38 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#39 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6291:14)
#40 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#41 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6291:14)
#42 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#43 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#44 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#45 ProxyElement.update (package:flutter/src/widgets/framework.dart:5108:5)
#46 _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:111:11)
#47 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#48 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6291:14)
#49 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#50 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#51 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
#52 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#53 StatefulElement.update (package:flutter/src/widgets/framework.dart:4960:5)
#54 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#55 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#56 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#57 ProxyElement.update (package:flutter/src/widgets/framework.dart:5108:5)
#58 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#59 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#60 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#61 ProxyElement.update (package:flutter/src/widgets/framework.dart:5108:5)
#62 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#63 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#64 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
#65 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#66 StatefulElement.update (package:flutter/src/widgets/framework.dart:4960:5)
#67 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#68 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#69 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#70 StatelessElement.update (package:flutter/src/widgets/framework.dart:4834:5)
#71 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#72 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#73 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#74 StatelessElement.update (package:flutter/src/widgets/framework.dart:4834:5)
#75 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#76 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6291:14)
#77 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#78 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#79 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#80 ProxyElement.update (package:flutter/src/widgets/framework.dart:5108:5)
#81 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#82 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#83 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#84 ProxyElement.update (package:flutter/src/widgets/framework.dart:5108:5)
#85 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#86 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#87 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
#88 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#89 StatefulElement.update (package:flutter/src/widgets/framework.dart:4960:5)
#90 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#91 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#92 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
#93 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#94 StatefulElement.update (package:flutter/src/widgets/framework.dart:4960:5)
#95 Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
#96 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
#97 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
#98 Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
#99 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2659:19)
#100 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
#101 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
#102 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#103 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
#104 SchedulerBinding.scheduleWarmUpFrame. (package:flutter/src/scheduler/binding.dart:862:7)
(elided 4 frames from class _RawReceivePortImpl, class _Timer, and dart:async-patch)

════════════════════════════════════════════════════════════════════════════════════════════════════
Reloaded 4 of 940 libraries in 711ms.

@D00mch
Copy link
Contributor Author

D00mch commented May 12, 2022

And another example, where I can't skip using dash is this issue #61:
(-> % .-body utils/keywordize-blunt)

@D00mch
Copy link
Contributor Author

D00mch commented May 12, 2022

I have reproduced this with another code:

(defn- ^:async handle-method [url params get-resp-fn]
  (let [uri (.parse Uri (if params (str url "?" (params->query-string params)) url))
        response (await (get-resp-fn uri))
        data (response->map response)]
    (if (= (.-statusCode response) 200)  ;; this started wining after I wrap it with the function `handle-method`
      [data nil]
      [nil data])))

(defn ^:async post [url body & [params headers]]
  (handle-method url params 
                 #(http/post %1 
                             :body (some-> body stringify-keys convert.json/encode)
                             :headers (when headers ^#/(Map String String) headers))))
Restarted application in 1,069ms.
E/flutter (30943): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: NoSuchMethodError: Class 'int' has n
o instance method 'call'.
E/flutter (30943): Receiver: 200
E/flutter (30943): Tried calling: call()
E/flutter (30943): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:38:5)
E/flutter (30943): #1      handle_method (package:lconvex/cljd-out/lconvex/http.dart:174:48)
E/flutter (30943): <asynchronous suspension>
E/flutter (30943): #2      init_async (package:lconvex/cljd-out/lconvex/sdk.dart:26:10)
E/flutter (30943): <asynchronous suspension>
E/flutter (30943): #3      main (package:lconvex/cljd-out/lconvex/main.dart:22:2)
E/flutter (30943): <asynchronous suspension>
E/flutter (30943):

@cgrand
Copy link
Contributor

cgrand commented May 13, 2022

You must get “stern warnings” from the compiler. Add a type hint so that the compiler can determine the type of the object.

@D00mch
Copy link
Contributor Author

D00mch commented May 14, 2022

Yes, this works with hint, thanks.

@dupuchba
Copy link
Contributor

should I close this issue @cgrand & @Liverm0r ?

@D00mch D00mch closed this as completed May 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants