Comments (4)
Sorry, I should have pointed you to this Squid feature list from the start. There is expressly no support for path-dependent types in Squid.
I am wondering why you need to embed type tags in the DSL code fragments, though. What is the use case?
from squid.
Oh, OK.
We need this because most Flink/Spark methods require TypeTag
/ClassTag
. So after lowering to Flink/Spark, we have TypeTag
everywhere.
from squid.
Ugh... that's a bit annoying.
Note that ClassTag
should [EDIT: typo] not be problematic. As for TypeTag
, it's actually problematic because scala.reflect.runtime.universe
is not a module but a simple val
, defined as:
lazy val universe: api.JavaUniverse = new runtime.JavaUniverse
One workaround would be to define your own module universe as:
object universe extends runtime.JavaUniverse
...though that would not help if you want to use definitions you can't change such as the Spark ones.
Maybe then, it would be sufficient to declare an implicit conversion from scala.reflect.api.JavaUniverse#TypeTag[T]
to reflect.runtime.universe.TypeTag[T]
, implemented as a cast?
EDIT: I'm wondering what kind of code it generates to actually create the type tags – code that would also need to be embedded. Is it some intricate stuff with local classes? Or do you remove these implicits as alluded in #55?
from squid.
I made a typo in the message above: class tags are not problematic; they embed well. For example:
scala> import squid.TestDSL.Predef._
import squid.TestDSL.Predef._
scala> code"scala.reflect.classTag[String]"
res0: squid.TestDSL.ClosedCode[scala.reflect.ClassTag[String]] = code"scala.reflect.`package`.classTag[java.lang.String](scala.reflect.ClassTag.apply[java.lang.String](_root_.scala.Predef.classOf[String]))"
from squid.
Related Issues (20)
- Remove special handling of AnyCode
- Vararg support in embedded Defs HOT 1
- Move away from the current `rewrite` macro implementation
- Support cross-quotation references in quasicode HOT 1
- Improve the Base interface
- Fix SchedulingANF
- Code pattern matching should ignore difference between overriding and overridden symbols HOT 1
- Make `Const` safer with a type class HOT 1
- Make syntax of variable function insertion more regular
- Implicit modifiers fall off from ValDefs HOT 6
- Generic arguments of inner classes disappear HOT 2
- Virtualize `def` and `lazy val` in embedded code
- Support Java varargs
- Investigate and fix remaining Squid issues raised during Emma experimentation
- Make non-contextual Code the default
- Make a release for Pilatus HOT 1
- Failed to generate semanticdb: repeated argument not allowed HOT 1
- Support for default values in class's methods
- Project Status? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from squid.