jdk

Форк
0
348 строк · 7.2 Кб
1
/*
2
 * Copyright (c) 2012, 2021, Oracle and/or its affiliates. All rights reserved.
3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
 *
5
 * This code is free software; you can redistribute it and/or modify it
6
 * under the terms of the GNU General Public License version 2 only, as
7
 * published by the Free Software Foundation.
8
 *
9
 * This code is distributed in the hope that it will be useful, but WITHOUT
10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
 * version 2 for more details (a copy is included in the LICENSE file that
13
 * accompanied this code).
14
 *
15
 * You should have received a copy of the GNU General Public License version
16
 * 2 along with this work; if not, write to the Free Software Foundation,
17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
 *
19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
 * or visit www.oracle.com if you need additional information or have any
21
 * questions.
22
 */
23

24
/*
25
 * @test
26
 * @bug 7021614 8076026 8273244
27
 * @summary extend com.sun.source API to support parsing javadoc comments
28
 * @modules jdk.compiler/com.sun.tools.javac.api
29
 *          jdk.compiler/com.sun.tools.javac.file
30
 *          jdk.compiler/com.sun.tools.javac.tree
31
 *          jdk.compiler/com.sun.tools.javac.util
32
 * @build DocCommentTester
33
 * @run main DocCommentTester AttrTest.java
34
 */
35

36
class AttrTest {
37
    /**
38
     * <a name=unquoted>foo</a>
39
     */
40
    void unquoted_attr() { }
41
/*
42
DocComment[DOC_COMMENT, pos:1
43
  firstSentence: 3
44
    StartElement[START_ELEMENT, pos:1
45
      name:a
46
      attributes: 1
47
        Attribute[ATTRIBUTE, pos:4
48
          name: name
49
          vkind: UNQUOTED
50
          value: 1
51
            Text[TEXT, pos:9, unquoted]
52
        ]
53
    ]
54
    Text[TEXT, pos:18, foo]
55
    EndElement[END_ELEMENT, pos:21, a]
56
  body: empty
57
  block tags: empty
58
]
59
*/
60

61
    /**
62
     * <a name-test=hyphened>foo</a>
63
     */
64
    void hyphened_attr() { }
65
/*
66
DocComment[DOC_COMMENT, pos:1
67
  firstSentence: 3
68
    StartElement[START_ELEMENT, pos:1
69
      name:a
70
      attributes: 1
71
        Attribute[ATTRIBUTE, pos:4
72
          name: name-test
73
          vkind: UNQUOTED
74
          value: 1
75
            Text[TEXT, pos:14, hyphened]
76
        ]
77
    ]
78
    Text[TEXT, pos:23, foo]
79
    EndElement[END_ELEMENT, pos:26, a]
80
  body: empty
81
  block tags: empty
82
]
83
*/
84

85
    /**
86
     * <a name="double_quoted">foo</a>
87
     */
88
    void double_quoted_attr() { }
89
/*
90
DocComment[DOC_COMMENT, pos:1
91
  firstSentence: 3
92
    StartElement[START_ELEMENT, pos:1
93
      name:a
94
      attributes: 1
95
        Attribute[ATTRIBUTE, pos:4
96
          name: name
97
          vkind: DOUBLE
98
          value: 1
99
            Text[TEXT, pos:10, double_quoted]
100
        ]
101
    ]
102
    Text[TEXT, pos:25, foo]
103
    EndElement[END_ELEMENT, pos:28, a]
104
  body: empty
105
  block tags: empty
106
]
107
*/
108

109
    /**
110
     * <a name='single_quoted'>foo</a>
111
     */
112
    void single_quoted_attr() { }
113
/*
114
DocComment[DOC_COMMENT, pos:1
115
  firstSentence: 3
116
    StartElement[START_ELEMENT, pos:1
117
      name:a
118
      attributes: 1
119
        Attribute[ATTRIBUTE, pos:4
120
          name: name
121
          vkind: SINGLE
122
          value: 1
123
            Text[TEXT, pos:10, single_quoted]
124
        ]
125
    ]
126
    Text[TEXT, pos:25, foo]
127
    EndElement[END_ELEMENT, pos:28, a]
128
  body: empty
129
  block tags: empty
130
]
131
*/
132

133
    /**
134
     * <hr size="3">
135
     */
136
    void numeric_attr() { }
137
/*
138
DocComment[DOC_COMMENT, pos:1
139
  firstSentence: 1
140
    StartElement[START_ELEMENT, pos:1
141
      name:hr
142
      attributes: 1
143
        Attribute[ATTRIBUTE, pos:5
144
          name: size
145
          vkind: DOUBLE
146
          value: 1
147
            Text[TEXT, pos:11, 3]
148
        ]
149
    ]
150
  body: empty
151
  block tags: empty
152
]
153
*/
154

155
    /**
156
     * <a href="{@docRoot}/index.html">
157
     */
158
    void docRoot_attr() { }
159
/*
160
DocComment[DOC_COMMENT, pos:1
161
  firstSentence: 1
162
    StartElement[START_ELEMENT, pos:1
163
      name:a
164
      attributes: 1
165
        Attribute[ATTRIBUTE, pos:4
166
          name: href
167
          vkind: DOUBLE
168
          value: 2
169
            DocRoot[DOC_ROOT, pos:10]
170
            Text[TEXT, pos:20, /index.html]
171
        ]
172
    ]
173
  body: empty
174
  block tags: empty
175
]
176
*/
177

178
    /**
179
     * <a name="abc&quot;def">
180
     */
181
    void entity_attr() { }
182
/*
183
DocComment[DOC_COMMENT, pos:1
184
  firstSentence: 1
185
    StartElement[START_ELEMENT, pos:1
186
      name:a
187
      attributes: 1
188
        Attribute[ATTRIBUTE, pos:4
189
          name: name
190
          vkind: DOUBLE
191
          value: 3
192
            Text[TEXT, pos:10, abc]
193
            Entity[ENTITY, pos:13, quot]
194
            Text[TEXT, pos:19, def]
195
        ]
196
    ]
197
  body: empty
198
  block tags: empty
199
]
200
*/
201

202
    /**
203
     * <hr noshade>
204
     */
205
    void no_value_attr() { }
206
/*
207
DocComment[DOC_COMMENT, pos:1
208
  firstSentence: 1
209
    StartElement[START_ELEMENT, pos:1
210
      name:hr
211
      attributes: 1
212
        Attribute[ATTRIBUTE, pos:5
213
          name: noshade
214
          vkind: EMPTY
215
          value: null
216
        ]
217
    ]
218
  body: empty
219
  block tags: empty
220
]
221
*/
222

223
    /**
224
     * abc <hr size='3'/>
225
     */
226
    void self_closing_attr_1() { }
227
/*
228
DocComment[DOC_COMMENT, pos:1
229
  firstSentence: 2
230
    Text[TEXT, pos:1, abc_]
231
    StartElement[START_ELEMENT, pos:5
232
      name:hr
233
      attributes: 1
234
        Attribute[ATTRIBUTE, pos:9
235
          name: size
236
          vkind: SINGLE
237
          value: 1
238
            Text[TEXT, pos:15, 3]
239
        ]
240
    ]
241
  body: empty
242
  block tags: empty
243
]
244
*/
245

246
    /**
247
     * abc <hr size=3 />
248
     */
249
    void self_closing_attr_2() { }
250
/*
251
DocComment[DOC_COMMENT, pos:1
252
  firstSentence: 2
253
    Text[TEXT, pos:1, abc_]
254
    StartElement[START_ELEMENT, pos:5
255
      name:hr
256
      attributes: 1
257
        Attribute[ATTRIBUTE, pos:9
258
          name: size
259
          vkind: UNQUOTED
260
          value: 1
261
            Text[TEXT, pos:14, 3]
262
        ]
263
    ]
264
  body: empty
265
  block tags: empty
266
]
267
*/
268

269
    /**
270
     * abc <hr size="3
271
     */
272
    void unterminated_attr_eoi() { }
273
/*
274
DocComment[DOC_COMMENT, pos:1
275
  firstSentence: 3
276
    Text[TEXT, pos:1, abc_]
277
    Erroneous[ERRONEOUS, pos:5
278
      code: compiler.err.dc.malformed.html
279
      body: <
280
    ]
281
    Text[TEXT, pos:6, hr_size="3]
282
  body: empty
283
  block tags: empty
284
]
285
*/
286

287
    /**
288
     * abc <hr size="3
289
     * @author jjg
290
     */
291
    void unterminated_attr_block() { }
292
/*
293
DocComment[DOC_COMMENT, pos:1
294
  firstSentence: 3
295
    Text[TEXT, pos:1, abc_]
296
    Erroneous[ERRONEOUS, pos:5
297
      code: compiler.err.dc.malformed.html
298
      body: <
299
    ]
300
    Text[TEXT, pos:6, hr_size="3]
301
  body: empty
302
  block tags: 1
303
    Author[AUTHOR, pos:18
304
      name: 1
305
        Text[TEXT, pos:26, jjg]
306
    ]
307
]
308
*/
309

310
    /**
311
     * <a name1="val1" name2='val2' name3=val3 name4>
312
     */
313
    void multiple_attr() { }
314
/*
315
DocComment[DOC_COMMENT, pos:1
316
  firstSentence: 1
317
    StartElement[START_ELEMENT, pos:1
318
      name:a
319
      attributes: 4
320
        Attribute[ATTRIBUTE, pos:4
321
          name: name1
322
          vkind: DOUBLE
323
          value: 1
324
            Text[TEXT, pos:11, val1]
325
        ]
326
        Attribute[ATTRIBUTE, pos:17
327
          name: name2
328
          vkind: SINGLE
329
          value: 1
330
            Text[TEXT, pos:24, val2]
331
        ]
332
        Attribute[ATTRIBUTE, pos:30
333
          name: name3
334
          vkind: UNQUOTED
335
          value: 1
336
            Text[TEXT, pos:36, val3]
337
        ]
338
        Attribute[ATTRIBUTE, pos:41
339
          name: name4
340
          vkind: EMPTY
341
          value: null
342
        ]
343
    ]
344
  body: empty
345
  block tags: empty
346
]
347
*/
348
}
349

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.