|
50 | 50 | import javax.tools.JavaFileManager; |
51 | 51 | import javax.tools.StandardJavaFileManager; |
52 | 52 |
|
| 53 | +import com.sun.source.doctree.BlockTagTree; |
53 | 54 | import com.sun.source.doctree.DocTree; |
54 | 55 |
|
| 56 | +import com.sun.source.doctree.InlineTagTree; |
55 | 57 | import jdk.javadoc.doclet.Doclet; |
56 | 58 | import jdk.javadoc.doclet.DocletEnvironment; |
57 | 59 | import jdk.javadoc.doclet.Taglet.Location; |
@@ -349,89 +351,88 @@ void seenTag(String name) { |
349 | 351 | * @param trees the trees containing the comments |
350 | 352 | */ |
351 | 353 | public void checkTags(Element element, Iterable<? extends DocTree> trees) { |
352 | | - CommentHelper ch = utils.getCommentHelper(element); |
353 | 354 | for (DocTree tag : trees) { |
354 | | - String name = tag.getKind().tagName; |
| 355 | + String name = switch (tag.getKind()) { |
| 356 | + case UNKNOWN_INLINE_TAG -> ((InlineTagTree) tag).getTagName(); |
| 357 | + case UNKNOWN_BLOCK_TAG -> ((BlockTagTree) tag).getTagName(); |
| 358 | + default -> tag.getKind().tagName; |
| 359 | + }; |
355 | 360 | if (name == null) { |
356 | | - continue; |
| 361 | + continue; // not a tag |
357 | 362 | } |
358 | | - if (!name.isEmpty() && name.charAt(0) == '@') { |
359 | | - name = name.substring(1); |
360 | | - } |
361 | | - if (! (standardTags.contains(name) || allTaglets.containsKey(name))) { // defunct, see 8314213 |
362 | | - if (standardTagsLowercase.contains(Utils.toLowerCase(name))) { |
363 | | - messages.warning(ch.getDocTreePath(tag), "doclet.UnknownTagLowercase", ch.getTagName(tag)); |
364 | | - continue; |
365 | | - } else { |
366 | | - messages.warning(ch.getDocTreePath(tag), "doclet.UnknownTag", ch.getTagName(tag)); |
367 | | - continue; |
| 363 | + if (!allTaglets.containsKey(name)) { |
| 364 | + if (!config.isDocLintSyntaxGroupEnabled()) { |
| 365 | + var ch = utils.getCommentHelper(element); |
| 366 | + if (standardTagsLowercase.contains(Utils.toLowerCase(name))) { |
| 367 | + messages.warning(ch.getDocTreePath(tag), "doclet.UnknownTagLowercase", ch.getTagName(tag)); |
| 368 | + } else { |
| 369 | + messages.warning(ch.getDocTreePath(tag), "doclet.UnknownTag", ch.getTagName(tag)); |
| 370 | + } |
368 | 371 | } |
| 372 | + continue; // unknown tag |
369 | 373 | } |
370 | 374 | final Taglet taglet = allTaglets.get(name); |
371 | | - // Check and verify tag usage |
372 | | - if (taglet != null) { |
373 | | - if (taglet instanceof SimpleTaglet st && !st.isEnabled()) { |
374 | | - // taglet has been disabled |
375 | | - return; |
376 | | - } |
| 375 | + if (taglet instanceof SimpleTaglet st && !st.isEnabled()) { |
| 376 | + continue; // taglet has been disabled |
| 377 | + } |
377 | 378 |
|
378 | | - new SimpleElementVisitor14<Void, Void>() { |
379 | | - @Override |
380 | | - public Void visitModule(ModuleElement e, Void p) { |
381 | | - if (!taglet.inModule()) { |
382 | | - printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "module"); |
383 | | - } |
384 | | - return null; |
| 379 | + // Check and verify tag usage |
| 380 | + new SimpleElementVisitor14<Void, Void>() { |
| 381 | + @Override |
| 382 | + public Void visitModule(ModuleElement e, Void p) { |
| 383 | + if (!taglet.inModule()) { |
| 384 | + printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "module"); |
385 | 385 | } |
| 386 | + return null; |
| 387 | + } |
386 | 388 |
|
387 | | - @Override |
388 | | - public Void visitPackage(PackageElement e, Void p) { |
389 | | - if (!taglet.inPackage()) { |
390 | | - printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "package"); |
391 | | - } |
392 | | - return null; |
| 389 | + @Override |
| 390 | + public Void visitPackage(PackageElement e, Void p) { |
| 391 | + if (!taglet.inPackage()) { |
| 392 | + printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "package"); |
393 | 393 | } |
| 394 | + return null; |
| 395 | + } |
394 | 396 |
|
395 | | - @Override |
396 | | - public Void visitType(TypeElement e, Void p) { |
397 | | - if (!taglet.inType()) { |
398 | | - printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "class"); |
399 | | - } |
400 | | - return null; |
| 397 | + @Override |
| 398 | + public Void visitType(TypeElement e, Void p) { |
| 399 | + if (!taglet.inType()) { |
| 400 | + printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "class"); |
401 | 401 | } |
| 402 | + return null; |
| 403 | + } |
402 | 404 |
|
403 | | - @Override |
404 | | - public Void visitExecutable(ExecutableElement e, Void p) { |
405 | | - if (utils.isConstructor(e) && !taglet.inConstructor()) { |
406 | | - printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "constructor"); |
407 | | - } else if (!taglet.inMethod()) { |
408 | | - printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "method"); |
409 | | - } |
410 | | - return null; |
| 405 | + @Override |
| 406 | + public Void visitExecutable(ExecutableElement e, Void p) { |
| 407 | + if (utils.isConstructor(e) && !taglet.inConstructor()) { |
| 408 | + printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "constructor"); |
| 409 | + } else if (!taglet.inMethod()) { |
| 410 | + printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "method"); |
411 | 411 | } |
| 412 | + return null; |
| 413 | + } |
412 | 414 |
|
413 | | - @Override |
414 | | - public Void visitVariable(VariableElement e, Void p) { |
415 | | - if (utils.isField(e) && !taglet.inField()) { |
416 | | - printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "field"); |
417 | | - } |
418 | | - return null; |
| 415 | + @Override |
| 416 | + public Void visitVariable(VariableElement e, Void p) { |
| 417 | + if (utils.isField(e) && !taglet.inField()) { |
| 418 | + printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "field"); |
419 | 419 | } |
| 420 | + return null; |
| 421 | + } |
420 | 422 |
|
421 | | - @Override |
422 | | - public Void visitUnknown(Element e, Void p) { |
423 | | - if (utils.isOverviewElement(e) && !taglet.inOverview()) { |
424 | | - printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "overview"); |
425 | | - } |
426 | | - return null; |
| 423 | + @Override |
| 424 | + public Void visitUnknown(Element e, Void p) { |
| 425 | + if (utils.isOverviewElement(e) && !taglet.inOverview()) { |
| 426 | + printTagMisuseWarn(utils.getCommentHelper(e), taglet, tag, "overview"); |
427 | 427 | } |
| 428 | + return null; |
| 429 | + } |
428 | 430 |
|
429 | | - @Override |
430 | | - protected Void defaultAction(Element e, Void p) { |
431 | | - return null; |
432 | | - } |
433 | | - }.visit(element); |
434 | | - } |
| 431 | + @Override |
| 432 | + protected Void defaultAction(Element e, Void p) { |
| 433 | + return null; |
| 434 | + } |
| 435 | + }.visit(element); |
435 | 436 | } |
436 | 437 | } |
437 | 438 |
|
|
0 commit comments