File tree 3 files changed +24
-11
lines changed 3 files changed +24
-11
lines changed Original file line number Diff line number Diff line change @@ -11,22 +11,31 @@ trait RDF:
11
11
rdf =>
12
12
13
13
type R = rdf.type
14
-
15
- type Node <: Matchable
16
- type URI <: Node
14
+ type rNode <: Matchable
15
+ type rURI <: rNode
16
+ type Node <: rNode
17
+ type URI <: Node & rURI
17
18
18
19
given rops : ROps [R ]
19
20
end RDF
20
21
21
22
object RDF :
23
+
24
+ type rNode [R <: RDF ] = R match
25
+ case GetRelativeNode [n] => n & Matchable
26
+
27
+ type rURI [R <: RDF ] = R match
28
+ case GetRelativeURI [u] => u & rNode[R ]
22
29
23
30
type Node [R <: RDF ] = R match
24
- case GetNode [n] => n
31
+ case GetNode [n] => n & rNode[ R ]
25
32
26
33
type URI [R <: RDF ] <: Node [R ] = R match
27
- case GetURI [u] => u & Node [R ]
28
-
34
+ case GetURI [u] => u & Node [R ] & rURI[R ]
35
+
36
+ private type GetRelativeNode [N ] = RDF { type rNode = N }
29
37
private type GetNode [N ] = RDF { type Node = N }
38
+ private type GetRelativeURI [U ] = RDF { type rURI = U }
30
39
private type GetURI [U ] = RDF { type URI = U }
31
40
32
41
end RDF
Original file line number Diff line number Diff line change @@ -24,9 +24,11 @@ object ClassTypes {
24
24
object ClassRDF extends generic.RDF :
25
25
import class_based .ClassTypes as cz
26
26
import generic .*
27
-
28
- override opaque type Node <: Matchable = cz.Node
29
- override opaque type URI <: Node = cz.Uri
27
+
28
+ override opaque type rNode <: Matchable = cz.Node
29
+ override opaque type rURI <: rNode = cz.Uri
30
+ override opaque type Node <: rNode = cz.Node
31
+ override opaque type URI <: Node & rURI = cz.Uri
30
32
31
33
given rops : generic.ROps [R ] with
32
34
override def mkUri (str : String ): Try [RDF .URI [R ]] = Try (
Original file line number Diff line number Diff line change @@ -8,8 +8,10 @@ import generic.*
8
8
// todo, put back example using traits only to see if Java is the problem
9
9
object TraitBasedRDF extends RDF :
10
10
lazy val factory : rdfscala.ScalaMkNodes = rdfscala.SimpleScalaNodeFactory
11
- override opaque type Node <: Matchable = rdfscala.TstNode
12
- override opaque type URI <: Node = rdfscala.URI
11
+ override opaque type rNode <: Matchable = rdfscala.TstNode
12
+ override opaque type rURI <: rNode = rdfscala.URI
13
+ override opaque type Node <: rNode = rdfscala.TstNode
14
+ override opaque type URI <: Node & rURI = rdfscala.URI
13
15
14
16
given rops : ROps [R ] with
15
17
override def mkUri (str : String ): Try [RDF .URI [R ]] = Try (
You can’t perform that action at this time.
0 commit comments