summaryrefslogtreecommitdiff
path: root/test/clojure/test_clojure/genclass/examples.clj
blob: 3f94fa4155020448181ec3c26e36e12af3d9ac8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
;   Copyright (c) Rich Hickey. All rights reserved.
;   The use and distribution terms for this software are covered by the
;   Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
;   which can be found in the file epl-v10.html at the root of this distribution.
;   By using this software in any fashion, you are agreeing to be bound by
;   the terms of this license.
;   You must not remove this notice, or any other, from this software.

(ns ^{:doc "Test classes that are AOT-compile for the tests in
           clojure.test-clojure.genclass."
      :author "Stuart Halloway, Daniel Solano Gómez"}
  clojure.test-clojure.genclass.examples)

(definterface ExampleInterface
  (foo [a])
  (foo [a b])
  (foo [a #^int b]))

(gen-class :name clojure.test_clojure.genclass.examples.ExampleClass
           :implements [clojure.test_clojure.genclass.examples.ExampleInterface])

;; -foo-Object unimplemented to test missing fn case

(defn -foo-Object-Object
  [_ o1 o2]
  "foo with o, o")

(defn -foo-Object-int
  [_ o i]
  "foo with o, i")

(gen-class :name ^{Deprecated {}
                   SuppressWarnings ["Warning1"] ; discarded
                   java.lang.annotation.Target []}
                 clojure.test_clojure.genclass.examples.ExampleAnnotationClass
           :prefix "annot-"
           :methods [[^{Deprecated {}
                        Override {}} ;discarded
                      foo [^{java.lang.annotation.Retention java.lang.annotation.RetentionPolicy/SOURCE
                             java.lang.annotation.Target    [java.lang.annotation.ElementType/TYPE
                                                             java.lang.annotation.ElementType/PARAMETER]}
                           String] void]])

(definterface ArrayDefInterface
  ; primitive array sugar
  (^void takesByteArray [^bytes a])
  (^void takesCharArray [^chars a])
  (^void takesShortArray [^shorts a])
  (^void takesIntArray [^ints a])
  (^void takesLongArray [^longs a])
  (^void takesFloatArray [^floats a])
  (^void takesDoubleArray [^doubles a])
  (^void takesBooleanArray [^booleans a])
  ; raw primitive arrays
  (^"[B" returnsByteArray [])
  (^"[C" returnsCharArray [])
  (^"[I" returnsIntArray [])
  (^"[S" returnsShortArray [])
  (^"[J" returnsLongArray [])
  (^"[F" returnsFloatArray [])
  (^"[D" returnsDoubleArray [])
  (^"[Z" returnsBooleanArray [])
  ; Object arrays
  (^void takesMapArray [^"[Ljava.util.Map;" a])
  (^"[[Ljava.util.Map;" returnsMap2dArray []))

(gen-interface
  :name clojure.test_clojure.genclass.examples.ArrayGenInterface
  :methods [; sugar
            [takesByteArray [bytes] void]
            [takesCharArray [chars] void]
            [takesShortArray [shorts] void]
            [takesIntArray [ints] void]
            [takesLongArray [longs] void]
            [takesFloatArray [floats] void]
            [takesDoubleArray [doubles] void]
            [takesBooleanArray [booleans] void]
            ; raw primitive types
            [returnsByteArray [] "[B"]
            [returnsCharArray [] "[C"]
            [returnsShortArray [] "[S"]
            [returnsIntArray [] "[I"]
            [returnsLongArray [] "[J"]
            [returnsFloatArray [] "[F"]
            [returnsDoubleArray [] "[D"]
            [returnsBooleanArray [] "[Z"]
            ; object arrays
            [takesMapArray ["[Ljava.util.Map;"] void]
            [returnsMap2dArray [] "[[Ljava.util.Map;"]])