src/share/classes/com/sun/tools/javac/tree/DCTree.java

Fri, 30 Nov 2012 15:14:36 +0000

author
mcimadamore
date
Fri, 30 Nov 2012 15:14:36 +0000
changeset 1435
9b26c96f5138
parent 1409
33abf479f202
child 1455
75ab654b5cd5
permissions
-rw-r--r--

8004101: Add checks for method reference well-formedness
Summary: Bring method reference type-checking in sync with latest EDR
Reviewed-by: jjg

jjg@1409 1 /*
jjg@1409 2 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
jjg@1409 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
jjg@1409 4 *
jjg@1409 5 * This code is free software; you can redistribute it and/or modify it
jjg@1409 6 * under the terms of the GNU General Public License version 2 only, as
jjg@1409 7 * published by the Free Software Foundation. Oracle designates this
jjg@1409 8 * particular file as subject to the "Classpath" exception as provided
jjg@1409 9 * by Oracle in the LICENSE file that accompanied this code.
jjg@1409 10 *
jjg@1409 11 * This code is distributed in the hope that it will be useful, but WITHOUT
jjg@1409 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
jjg@1409 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
jjg@1409 14 * version 2 for more details (a copy is included in the LICENSE file that
jjg@1409 15 * accompanied this code).
jjg@1409 16 *
jjg@1409 17 * You should have received a copy of the GNU General Public License version
jjg@1409 18 * 2 along with this work; if not, write to the Free Software Foundation,
jjg@1409 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
jjg@1409 20 *
jjg@1409 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
jjg@1409 22 * or visit www.oracle.com if you need additional information or have any
jjg@1409 23 * questions.
jjg@1409 24 */
jjg@1409 25
jjg@1409 26 package com.sun.tools.javac.tree;
jjg@1409 27
jjg@1409 28
jjg@1409 29 import javax.tools.Diagnostic;
jjg@1409 30
jjg@1409 31 import com.sun.source.doctree.*;
jjg@1409 32 import com.sun.tools.javac.parser.Tokens.Comment;
jjg@1409 33 import com.sun.tools.javac.util.Assert;
jjg@1409 34 import com.sun.tools.javac.util.DiagnosticSource;
jjg@1409 35 import com.sun.tools.javac.util.JCDiagnostic;
jjg@1409 36 import com.sun.tools.javac.util.JCDiagnostic.SimpleDiagnosticPosition;
jjg@1409 37 import com.sun.tools.javac.util.List;
jjg@1409 38 import com.sun.tools.javac.util.Name;
jjg@1409 39 import javax.tools.JavaFileObject;
jjg@1409 40
jjg@1409 41 /**
jjg@1409 42 * <p><b>This is NOT part of any supported API.
jjg@1409 43 * If you write code that depends on this, you do so at your own risk.
jjg@1409 44 * This code and its internal interfaces are subject to change or
jjg@1409 45 * deletion without notice.</b>
jjg@1409 46 */
jjg@1409 47 public abstract class DCTree implements DocTree {
jjg@1409 48
jjg@1409 49 /**
jjg@1409 50 * The position in the comment string.
jjg@1409 51 * Use {@link #getSourcePosition getSourcePosition} to convert
jjg@1409 52 * it to a position in the source file.
jjg@1409 53 *
jjg@1409 54 * TODO: why not simply translate all these values into
jjg@1409 55 * source file positions? Is it useful to have string-offset
jjg@1409 56 * positions as well?
jjg@1409 57 */
jjg@1409 58 public int pos;
jjg@1409 59
jjg@1409 60 public long getSourcePosition(DCDocComment dc) {
jjg@1409 61 return dc.comment.getSourcePos(pos);
jjg@1409 62 }
jjg@1409 63
jjg@1409 64 public JCDiagnostic.DiagnosticPosition pos(DCDocComment dc) {
jjg@1409 65 return new SimpleDiagnosticPosition(dc.comment.getSourcePos(pos));
jjg@1409 66 }
jjg@1409 67
jjg@1409 68 public static class DCDocComment extends DCTree implements DocCommentTree {
jjg@1409 69 final Comment comment; // required for the implicit source pos table
jjg@1409 70
jjg@1409 71 public final List<DCTree> firstSentence;
jjg@1409 72 public final List<DCTree> body;
jjg@1409 73 public final List<DCTree> tags;
jjg@1409 74
jjg@1409 75 public DCDocComment(Comment comment,
jjg@1409 76 List<DCTree> firstSentence, List<DCTree> body, List<DCTree> tags) {
jjg@1409 77 this.comment = comment;
jjg@1409 78 this.firstSentence = firstSentence;
jjg@1409 79 this.body = body;
jjg@1409 80 this.tags = tags;
jjg@1409 81 }
jjg@1409 82
jjg@1409 83 public Kind getKind() {
jjg@1409 84 return Kind.DOC_COMMENT;
jjg@1409 85 }
jjg@1409 86
jjg@1409 87 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 88 return v.visitDocComment(this, d);
jjg@1409 89 }
jjg@1409 90
jjg@1409 91 public List<? extends DocTree> getFirstSentence() {
jjg@1409 92 return firstSentence;
jjg@1409 93 }
jjg@1409 94
jjg@1409 95 public List<? extends DocTree> getBody() {
jjg@1409 96 return body;
jjg@1409 97 }
jjg@1409 98
jjg@1409 99 public List<? extends DocTree> getBlockTags() {
jjg@1409 100 return tags;
jjg@1409 101 }
jjg@1409 102
jjg@1409 103 }
jjg@1409 104
jjg@1409 105 public static abstract class DCBlockTag extends DCTree implements InlineTagTree {
jjg@1409 106 public String getTagName() {
jjg@1409 107 return getKind().tagName;
jjg@1409 108 }
jjg@1409 109 }
jjg@1409 110
jjg@1409 111 public static abstract class DCInlineTag extends DCTree implements InlineTagTree {
jjg@1409 112 public String getTagName() {
jjg@1409 113 return getKind().tagName;
jjg@1409 114 }
jjg@1409 115 }
jjg@1409 116
jjg@1409 117 public static class DCAttribute extends DCTree implements AttributeTree {
jjg@1409 118 public final Name name;
jjg@1409 119 public final ValueKind vkind;
jjg@1409 120 public final List<DCTree> value;
jjg@1409 121
jjg@1409 122 DCAttribute(Name name, ValueKind vkind, List<DCTree> value) {
jjg@1409 123 Assert.check((vkind == ValueKind.EMPTY) ? (value == null) : (value != null));
jjg@1409 124 this.name = name;
jjg@1409 125 this.vkind = vkind;
jjg@1409 126 this.value = value;
jjg@1409 127 }
jjg@1409 128
jjg@1409 129 @Override
jjg@1409 130 public Kind getKind() {
jjg@1409 131 return Kind.ATTRIBUTE;
jjg@1409 132 }
jjg@1409 133
jjg@1409 134 @Override
jjg@1409 135 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 136 return v.visitAttribute(this, d);
jjg@1409 137 }
jjg@1409 138
jjg@1409 139 @Override
jjg@1409 140 public Name getName() {
jjg@1409 141 return name;
jjg@1409 142 }
jjg@1409 143
jjg@1409 144 @Override
jjg@1409 145 public ValueKind getValueKind() {
jjg@1409 146 return vkind;
jjg@1409 147 }
jjg@1409 148
jjg@1409 149 @Override
jjg@1409 150 public List<DCTree> getValue() {
jjg@1409 151 return value;
jjg@1409 152 }
jjg@1409 153 }
jjg@1409 154
jjg@1409 155 public static class DCAuthor extends DCInlineTag implements AuthorTree {
jjg@1409 156 public final List<DCTree> name;
jjg@1409 157
jjg@1409 158 DCAuthor(List<DCTree> name) {
jjg@1409 159 this.name = name;
jjg@1409 160 }
jjg@1409 161
jjg@1409 162 @Override
jjg@1409 163 public Kind getKind() {
jjg@1409 164 return Kind.AUTHOR;
jjg@1409 165 }
jjg@1409 166
jjg@1409 167 @Override
jjg@1409 168 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 169 return v.visitAuthor(this, d);
jjg@1409 170 }
jjg@1409 171
jjg@1409 172 @Override
jjg@1409 173 public List<? extends DocTree> getName() {
jjg@1409 174 return name;
jjg@1409 175 }
jjg@1409 176 }
jjg@1409 177
jjg@1409 178 public static class DCComment extends DCTree implements CommentTree {
jjg@1409 179 public final String body;
jjg@1409 180
jjg@1409 181 DCComment(String body) {
jjg@1409 182 this.body = body;
jjg@1409 183 }
jjg@1409 184
jjg@1409 185 @Override
jjg@1409 186 public Kind getKind() {
jjg@1409 187 return Kind.COMMENT;
jjg@1409 188 }
jjg@1409 189
jjg@1409 190 @Override
jjg@1409 191 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 192 return v.visitComment(this, d);
jjg@1409 193 }
jjg@1409 194
jjg@1409 195 @Override
jjg@1409 196 public String getBody() {
jjg@1409 197 return body;
jjg@1409 198 }
jjg@1409 199 }
jjg@1409 200
jjg@1409 201 public static class DCDeprecated extends DCBlockTag implements DeprecatedTree {
jjg@1409 202 public final List<DCTree> body;
jjg@1409 203
jjg@1409 204 DCDeprecated(List<DCTree> body) {
jjg@1409 205 this.body = body;
jjg@1409 206 }
jjg@1409 207
jjg@1409 208 @Override
jjg@1409 209 public Kind getKind() {
jjg@1409 210 return Kind.DEPRECATED;
jjg@1409 211 }
jjg@1409 212
jjg@1409 213 @Override
jjg@1409 214 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 215 return v.visitDeprecated(this, d);
jjg@1409 216 }
jjg@1409 217
jjg@1409 218 @Override
jjg@1409 219 public List<? extends DocTree> getBody() {
jjg@1409 220 return body;
jjg@1409 221 }
jjg@1409 222 }
jjg@1409 223
jjg@1409 224 public static class DCDocRoot extends DCInlineTag implements DocRootTree {
jjg@1409 225
jjg@1409 226 @Override
jjg@1409 227 public Kind getKind() {
jjg@1409 228 return Kind.DOC_ROOT;
jjg@1409 229 }
jjg@1409 230
jjg@1409 231 @Override
jjg@1409 232 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 233 return v.visitDocRoot(this, d);
jjg@1409 234 }
jjg@1409 235 }
jjg@1409 236
jjg@1409 237 public static class DCEndElement extends DCTree implements EndElementTree {
jjg@1409 238 public final Name name;
jjg@1409 239
jjg@1409 240 DCEndElement(Name name) {
jjg@1409 241 this.name = name;
jjg@1409 242 }
jjg@1409 243
jjg@1409 244 @Override
jjg@1409 245 public Kind getKind() {
jjg@1409 246 return Kind.END_ELEMENT;
jjg@1409 247 }
jjg@1409 248
jjg@1409 249 @Override
jjg@1409 250 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 251 return v.visitEndElement(this, d);
jjg@1409 252 }
jjg@1409 253
jjg@1409 254 @Override
jjg@1409 255 public Name getName() {
jjg@1409 256 return name;
jjg@1409 257 }
jjg@1409 258 }
jjg@1409 259
jjg@1409 260 public static class DCEntity extends DCTree implements EntityTree {
jjg@1409 261 public final Name name;
jjg@1409 262
jjg@1409 263 DCEntity(Name name) {
jjg@1409 264 this.name = name;
jjg@1409 265 }
jjg@1409 266
jjg@1409 267 @Override
jjg@1409 268 public Kind getKind() {
jjg@1409 269 return Kind.ENTITY;
jjg@1409 270 }
jjg@1409 271
jjg@1409 272 @Override
jjg@1409 273 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 274 return v.visitEntity(this, d);
jjg@1409 275 }
jjg@1409 276
jjg@1409 277 @Override
jjg@1409 278 public Name getName() {
jjg@1409 279 return name;
jjg@1409 280 }
jjg@1409 281 }
jjg@1409 282
jjg@1409 283 public static class DCErroneous extends DCTree implements ErroneousTree, JCDiagnostic.DiagnosticPosition {
jjg@1409 284 public final String body;
jjg@1409 285 public final JCDiagnostic diag;
jjg@1409 286
jjg@1409 287 DCErroneous(String body, JCDiagnostic.Factory diags, DiagnosticSource diagSource, String code, Object... args) {
jjg@1409 288 this.body = body;
jjg@1409 289 this.diag = diags.error(diagSource, this, code, args);
jjg@1409 290 }
jjg@1409 291
jjg@1409 292 @Override
jjg@1409 293 public Kind getKind() {
jjg@1409 294 return Kind.ERRONEOUS;
jjg@1409 295 }
jjg@1409 296
jjg@1409 297 @Override
jjg@1409 298 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 299 return v.visitErroneous(this, d);
jjg@1409 300 }
jjg@1409 301
jjg@1409 302 @Override
jjg@1409 303 public String getBody() {
jjg@1409 304 return body;
jjg@1409 305 }
jjg@1409 306
jjg@1409 307 @Override
jjg@1409 308 public Diagnostic<JavaFileObject> getDiagnostic() {
jjg@1409 309 return diag;
jjg@1409 310 }
jjg@1409 311
jjg@1409 312 @Override
jjg@1409 313 public JCTree getTree() {
jjg@1409 314 return null;
jjg@1409 315 }
jjg@1409 316
jjg@1409 317 @Override
jjg@1409 318 public int getStartPosition() {
jjg@1409 319 return pos;
jjg@1409 320 }
jjg@1409 321
jjg@1409 322 @Override
jjg@1409 323 public int getPreferredPosition() {
jjg@1409 324 return pos + body.length() - 1;
jjg@1409 325 }
jjg@1409 326
jjg@1409 327 @Override
jjg@1409 328 public int getEndPosition(EndPosTable endPosTable) {
jjg@1409 329 return pos + body.length();
jjg@1409 330 }
jjg@1409 331 }
jjg@1409 332
jjg@1409 333 public static class DCIdentifier extends DCTree implements IdentifierTree {
jjg@1409 334 public final Name name;
jjg@1409 335
jjg@1409 336 DCIdentifier(Name name) {
jjg@1409 337 this.name = name;
jjg@1409 338 }
jjg@1409 339
jjg@1409 340 @Override
jjg@1409 341 public Kind getKind() {
jjg@1409 342 return Kind.IDENTIFIER;
jjg@1409 343 }
jjg@1409 344
jjg@1409 345 @Override
jjg@1409 346 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 347 return v.visitIdentifier(this, d);
jjg@1409 348 }
jjg@1409 349
jjg@1409 350 @Override
jjg@1409 351 public Name getName() {
jjg@1409 352 return name;
jjg@1409 353 }
jjg@1409 354 }
jjg@1409 355
jjg@1409 356 public static class DCInheritDoc extends DCInlineTag implements InheritDocTree {
jjg@1409 357 @Override
jjg@1409 358 public Kind getKind() {
jjg@1409 359 return Kind.INHERIT_DOC;
jjg@1409 360 }
jjg@1409 361
jjg@1409 362 @Override
jjg@1409 363 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 364 return v.visitInheritDoc(this, d);
jjg@1409 365 }
jjg@1409 366 }
jjg@1409 367
jjg@1409 368 public static class DCLink extends DCInlineTag implements LinkTree {
jjg@1409 369 public final Kind kind;
jjg@1409 370 public final DCReference ref;
jjg@1409 371 public final List<DCTree> label;
jjg@1409 372
jjg@1409 373 DCLink(Kind kind, DCReference ref, List<DCTree> label) {
jjg@1409 374 Assert.check(kind == Kind.LINK || kind == Kind.LINK_PLAIN);
jjg@1409 375 this.kind = kind;
jjg@1409 376 this.ref = ref;
jjg@1409 377 this.label = label;
jjg@1409 378 }
jjg@1409 379
jjg@1409 380 @Override
jjg@1409 381 public Kind getKind() {
jjg@1409 382 return kind;
jjg@1409 383 }
jjg@1409 384
jjg@1409 385 @Override
jjg@1409 386 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 387 return v.visitLink(this, d);
jjg@1409 388 }
jjg@1409 389
jjg@1409 390 @Override
jjg@1409 391 public ReferenceTree getReference() {
jjg@1409 392 return ref;
jjg@1409 393 }
jjg@1409 394
jjg@1409 395 @Override
jjg@1409 396 public List<? extends DocTree> getLabel() {
jjg@1409 397 return label;
jjg@1409 398 }
jjg@1409 399 }
jjg@1409 400
jjg@1409 401 public static class DCLiteral extends DCInlineTag implements LiteralTree {
jjg@1409 402 public final Kind kind;
jjg@1409 403 public final DCText body;
jjg@1409 404
jjg@1409 405 DCLiteral(Kind kind, DCText body) {
jjg@1409 406 Assert.check(kind == Kind.CODE || kind == Kind.LITERAL);
jjg@1409 407 this.kind = kind;
jjg@1409 408 this.body = body;
jjg@1409 409 }
jjg@1409 410
jjg@1409 411 @Override
jjg@1409 412 public Kind getKind() {
jjg@1409 413 return kind;
jjg@1409 414 }
jjg@1409 415
jjg@1409 416 @Override
jjg@1409 417 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 418 return v.visitLiteral(this, d);
jjg@1409 419 }
jjg@1409 420
jjg@1409 421 @Override
jjg@1409 422 public DCText getBody() {
jjg@1409 423 return body;
jjg@1409 424 }
jjg@1409 425 }
jjg@1409 426
jjg@1409 427 public static class DCParam extends DCBlockTag implements ParamTree {
jjg@1409 428 public final boolean isTypeParameter;
jjg@1409 429 public final DCIdentifier name;
jjg@1409 430 public final List<DCTree> description;
jjg@1409 431
jjg@1409 432 DCParam(boolean isTypeParameter, DCIdentifier name, List<DCTree> description) {
jjg@1409 433 this.isTypeParameter = isTypeParameter;
jjg@1409 434 this.name = name;
jjg@1409 435 this.description = description;
jjg@1409 436 }
jjg@1409 437
jjg@1409 438 @Override
jjg@1409 439 public Kind getKind() {
jjg@1409 440 return Kind.PARAM;
jjg@1409 441 }
jjg@1409 442
jjg@1409 443 @Override
jjg@1409 444 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 445 return v.visitParam(this, d);
jjg@1409 446 }
jjg@1409 447
jjg@1409 448 @Override
jjg@1409 449 public boolean isTypeParameter() {
jjg@1409 450 return isTypeParameter;
jjg@1409 451 }
jjg@1409 452
jjg@1409 453 @Override
jjg@1409 454 public IdentifierTree getName() {
jjg@1409 455 return name;
jjg@1409 456 }
jjg@1409 457
jjg@1409 458 @Override
jjg@1409 459 public List<? extends DocTree> getDescription() {
jjg@1409 460 return description;
jjg@1409 461 }
jjg@1409 462 }
jjg@1409 463
jjg@1409 464 public static class DCReference extends DCTree implements ReferenceTree {
jjg@1409 465 public final String signature;
jjg@1409 466
jjg@1409 467 // The following are not directly exposed through ReferenceTree
jjg@1409 468 // use DocTrees.getElement(TreePath,ReferenceTree)
jjg@1409 469 public final JCTree qualifierExpression;
jjg@1409 470 public final Name memberName;
jjg@1409 471 public final List<JCTree> paramTypes;
jjg@1409 472
jjg@1409 473
jjg@1409 474 DCReference(String signature, JCTree qualExpr, Name member, List<JCTree> paramTypes) {
jjg@1409 475 this.signature = signature;
jjg@1409 476 qualifierExpression = qualExpr;
jjg@1409 477 memberName = member;
jjg@1409 478 this.paramTypes = paramTypes;
jjg@1409 479 }
jjg@1409 480
jjg@1409 481 @Override
jjg@1409 482 public Kind getKind() {
jjg@1409 483 return Kind.REFERENCE;
jjg@1409 484 }
jjg@1409 485
jjg@1409 486 @Override
jjg@1409 487 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 488 return v.visitReference(this, d);
jjg@1409 489 }
jjg@1409 490
jjg@1409 491 @Override
jjg@1409 492 public String getSignature() {
jjg@1409 493 return signature;
jjg@1409 494 }
jjg@1409 495 }
jjg@1409 496
jjg@1409 497 public static class DCReturn extends DCBlockTag implements ReturnTree {
jjg@1409 498 public final List<DCTree> description;
jjg@1409 499
jjg@1409 500 DCReturn(List<DCTree> description) {
jjg@1409 501 this.description = description;
jjg@1409 502 }
jjg@1409 503
jjg@1409 504 @Override
jjg@1409 505 public Kind getKind() {
jjg@1409 506 return Kind.RETURN;
jjg@1409 507 }
jjg@1409 508
jjg@1409 509 @Override
jjg@1409 510 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 511 return v.visitReturn(this, d);
jjg@1409 512 }
jjg@1409 513
jjg@1409 514 @Override
jjg@1409 515 public List<? extends DocTree> getDescription() {
jjg@1409 516 return description;
jjg@1409 517 }
jjg@1409 518 }
jjg@1409 519
jjg@1409 520 public static class DCSee extends DCBlockTag implements SeeTree {
jjg@1409 521 public final List<DCTree> reference;
jjg@1409 522
jjg@1409 523 DCSee(List<DCTree> reference) {
jjg@1409 524 this.reference = reference;
jjg@1409 525 }
jjg@1409 526
jjg@1409 527 @Override
jjg@1409 528 public Kind getKind() {
jjg@1409 529 return Kind.SEE;
jjg@1409 530 }
jjg@1409 531
jjg@1409 532 @Override
jjg@1409 533 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 534 return v.visitSee(this, d);
jjg@1409 535 }
jjg@1409 536
jjg@1409 537 @Override
jjg@1409 538 public List<? extends DocTree> getReference() {
jjg@1409 539 return reference;
jjg@1409 540 }
jjg@1409 541 }
jjg@1409 542
jjg@1409 543 public static class DCSerial extends DCBlockTag implements SerialTree {
jjg@1409 544 public final List<DCTree> description;
jjg@1409 545
jjg@1409 546 DCSerial(List<DCTree> description) {
jjg@1409 547 this.description = description;
jjg@1409 548 }
jjg@1409 549
jjg@1409 550 @Override
jjg@1409 551 public Kind getKind() {
jjg@1409 552 return Kind.SERIAL;
jjg@1409 553 }
jjg@1409 554
jjg@1409 555 @Override
jjg@1409 556 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 557 return v.visitSerial(this, d);
jjg@1409 558 }
jjg@1409 559
jjg@1409 560 @Override
jjg@1409 561 public List<? extends DocTree> getDescription() {
jjg@1409 562 return description;
jjg@1409 563 }
jjg@1409 564 }
jjg@1409 565
jjg@1409 566 public static class DCSerialData extends DCBlockTag implements SerialDataTree {
jjg@1409 567 public final List<DCTree> description;
jjg@1409 568
jjg@1409 569 DCSerialData(List<DCTree> description) {
jjg@1409 570 this.description = description;
jjg@1409 571 }
jjg@1409 572
jjg@1409 573 @Override
jjg@1409 574 public Kind getKind() {
jjg@1409 575 return Kind.SERIAL_DATA;
jjg@1409 576 }
jjg@1409 577
jjg@1409 578 @Override
jjg@1409 579 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 580 return v.visitSerialData(this, d);
jjg@1409 581 }
jjg@1409 582
jjg@1409 583 @Override
jjg@1409 584 public List<? extends DocTree> getDescription() {
jjg@1409 585 return description;
jjg@1409 586 }
jjg@1409 587 }
jjg@1409 588
jjg@1409 589 public static class DCSerialField extends DCBlockTag implements SerialFieldTree {
jjg@1409 590 public final DCIdentifier name;
jjg@1409 591 public final DCReference type;
jjg@1409 592 public final List<DCTree> description;
jjg@1409 593
jjg@1409 594 DCSerialField(DCIdentifier name, DCReference type, List<DCTree> description) {
jjg@1409 595 this.description = description;
jjg@1409 596 this.name = name;
jjg@1409 597 this.type = type;
jjg@1409 598 }
jjg@1409 599
jjg@1409 600 @Override
jjg@1409 601 public Kind getKind() {
jjg@1409 602 return Kind.SERIAL_FIELD;
jjg@1409 603 }
jjg@1409 604
jjg@1409 605 @Override
jjg@1409 606 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 607 return v.visitSerialField(this, d);
jjg@1409 608 }
jjg@1409 609
jjg@1409 610 @Override
jjg@1409 611 public List<? extends DocTree> getDescription() {
jjg@1409 612 return description;
jjg@1409 613 }
jjg@1409 614
jjg@1409 615 @Override
jjg@1409 616 public IdentifierTree getName() {
jjg@1409 617 return name;
jjg@1409 618 }
jjg@1409 619
jjg@1409 620 @Override
jjg@1409 621 public ReferenceTree getType() {
jjg@1409 622 return type;
jjg@1409 623 }
jjg@1409 624 }
jjg@1409 625
jjg@1409 626 public static class DCSince extends DCInlineTag implements SinceTree {
jjg@1409 627 public final List<DCTree> body;
jjg@1409 628
jjg@1409 629 DCSince(List<DCTree> body) {
jjg@1409 630 this.body = body;
jjg@1409 631 }
jjg@1409 632
jjg@1409 633 @Override
jjg@1409 634 public Kind getKind() {
jjg@1409 635 return Kind.SINCE;
jjg@1409 636 }
jjg@1409 637
jjg@1409 638 @Override
jjg@1409 639 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 640 return v.visitSince(this, d);
jjg@1409 641 }
jjg@1409 642
jjg@1409 643 @Override
jjg@1409 644 public List<? extends DocTree> getBody() {
jjg@1409 645 return body;
jjg@1409 646 }
jjg@1409 647 }
jjg@1409 648
jjg@1409 649 public static class DCStartElement extends DCTree implements StartElementTree {
jjg@1409 650 public final Name name;
jjg@1409 651 public final List<DCTree> attrs;
jjg@1409 652 public final boolean selfClosing;
jjg@1409 653
jjg@1409 654 DCStartElement(Name name, List<DCTree> attrs, boolean selfClosing) {
jjg@1409 655 this.name = name;
jjg@1409 656 this.attrs = attrs;
jjg@1409 657 this.selfClosing = selfClosing;
jjg@1409 658 }
jjg@1409 659
jjg@1409 660 @Override
jjg@1409 661 public Kind getKind() {
jjg@1409 662 return Kind.START_ELEMENT;
jjg@1409 663 }
jjg@1409 664
jjg@1409 665 @Override
jjg@1409 666 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 667 return v.visitStartElement(this, d);
jjg@1409 668 }
jjg@1409 669
jjg@1409 670 @Override
jjg@1409 671 public Name getName() {
jjg@1409 672 return name;
jjg@1409 673 }
jjg@1409 674
jjg@1409 675 @Override
jjg@1409 676 public List<? extends DocTree> getAttributes() {
jjg@1409 677 return attrs;
jjg@1409 678 }
jjg@1409 679
jjg@1409 680 @Override
jjg@1409 681 public boolean isSelfClosing() {
jjg@1409 682 return selfClosing;
jjg@1409 683 }
jjg@1409 684 }
jjg@1409 685
jjg@1409 686 public static class DCText extends DCTree implements TextTree {
jjg@1409 687 public final String text;
jjg@1409 688
jjg@1409 689 DCText(String text) {
jjg@1409 690 this.text = text;
jjg@1409 691 }
jjg@1409 692
jjg@1409 693 @Override
jjg@1409 694 public Kind getKind() {
jjg@1409 695 return Kind.TEXT;
jjg@1409 696 }
jjg@1409 697
jjg@1409 698 @Override
jjg@1409 699 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 700 return v.visitText(this, d);
jjg@1409 701 }
jjg@1409 702
jjg@1409 703 @Override
jjg@1409 704 public String getBody() {
jjg@1409 705 return text;
jjg@1409 706 }
jjg@1409 707 }
jjg@1409 708
jjg@1409 709 public static class DCThrows extends DCBlockTag implements ThrowsTree {
jjg@1409 710 public final Kind kind;
jjg@1409 711 public final DCReference name;
jjg@1409 712 public final List<DCTree> description;
jjg@1409 713
jjg@1409 714 DCThrows(Kind kind, DCReference name, List<DCTree> description) {
jjg@1409 715 Assert.check(kind == Kind.EXCEPTION || kind == Kind.THROWS);
jjg@1409 716 this.kind = kind;
jjg@1409 717 this.name = name;
jjg@1409 718 this.description = description;
jjg@1409 719 }
jjg@1409 720
jjg@1409 721 @Override
jjg@1409 722 public Kind getKind() {
jjg@1409 723 return kind;
jjg@1409 724 }
jjg@1409 725
jjg@1409 726 @Override
jjg@1409 727 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 728 return v.visitThrows(this, d);
jjg@1409 729 }
jjg@1409 730
jjg@1409 731 @Override
jjg@1409 732 public ReferenceTree getExceptionName() {
jjg@1409 733 return name;
jjg@1409 734 }
jjg@1409 735
jjg@1409 736 @Override
jjg@1409 737 public List<? extends DocTree> getDescription() {
jjg@1409 738 return description;
jjg@1409 739 }
jjg@1409 740 }
jjg@1409 741
jjg@1409 742 public static class DCUnknownBlockTag extends DCBlockTag implements UnknownBlockTagTree {
jjg@1409 743 public final Name name;
jjg@1409 744 public final List<DCTree> content;
jjg@1409 745
jjg@1409 746 DCUnknownBlockTag(Name name, List<DCTree> content) {
jjg@1409 747 this.name = name;
jjg@1409 748 this.content = content;
jjg@1409 749 }
jjg@1409 750
jjg@1409 751 @Override
jjg@1409 752 public Kind getKind() {
jjg@1409 753 return Kind.UNKNOWN_BLOCK_TAG;
jjg@1409 754 }
jjg@1409 755
jjg@1409 756 @Override
jjg@1409 757 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 758 return v.visitUnknownBlockTag(this, d);
jjg@1409 759 }
jjg@1409 760
jjg@1409 761 @Override
jjg@1409 762 public String getTagName() {
jjg@1409 763 return name.toString();
jjg@1409 764 }
jjg@1409 765
jjg@1409 766 @Override
jjg@1409 767 public List<? extends DocTree> getContent() {
jjg@1409 768 return content;
jjg@1409 769 }
jjg@1409 770 }
jjg@1409 771
jjg@1409 772 public static class DCUnknownInlineTag extends DCInlineTag implements UnknownInlineTagTree {
jjg@1409 773 public final Name name;
jjg@1409 774 public final List<DCTree> content;
jjg@1409 775
jjg@1409 776 DCUnknownInlineTag(Name name, List<DCTree> content) {
jjg@1409 777 this.name = name;
jjg@1409 778 this.content = content;
jjg@1409 779 }
jjg@1409 780
jjg@1409 781 @Override
jjg@1409 782 public Kind getKind() {
jjg@1409 783 return Kind.UNKNOWN_INLINE_TAG;
jjg@1409 784 }
jjg@1409 785
jjg@1409 786 @Override
jjg@1409 787 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 788 return v.visitUnknownInlineTag(this, d);
jjg@1409 789 }
jjg@1409 790
jjg@1409 791 @Override
jjg@1409 792 public String getTagName() {
jjg@1409 793 return name.toString();
jjg@1409 794 }
jjg@1409 795
jjg@1409 796 @Override
jjg@1409 797 public List<? extends DocTree> getContent() {
jjg@1409 798 return content;
jjg@1409 799 }
jjg@1409 800 }
jjg@1409 801
jjg@1409 802 public static class DCValue extends DCInlineTag implements ValueTree {
jjg@1409 803 public final DCReference ref;
jjg@1409 804
jjg@1409 805 DCValue(DCReference ref) {
jjg@1409 806 this.ref = ref;
jjg@1409 807 }
jjg@1409 808
jjg@1409 809 @Override
jjg@1409 810 public Kind getKind() {
jjg@1409 811 return Kind.VALUE;
jjg@1409 812 }
jjg@1409 813
jjg@1409 814 @Override
jjg@1409 815 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 816 return v.visitValue(this, d);
jjg@1409 817 }
jjg@1409 818
jjg@1409 819 @Override
jjg@1409 820 public ReferenceTree getReference() {
jjg@1409 821 return ref;
jjg@1409 822 }
jjg@1409 823 }
jjg@1409 824
jjg@1409 825 public static class DCVersion extends DCBlockTag implements VersionTree {
jjg@1409 826 public final List<DCTree> body;
jjg@1409 827
jjg@1409 828 DCVersion(List<DCTree> body) {
jjg@1409 829 this.body = body;
jjg@1409 830 }
jjg@1409 831
jjg@1409 832 @Override
jjg@1409 833 public Kind getKind() {
jjg@1409 834 return Kind.VERSION;
jjg@1409 835 }
jjg@1409 836
jjg@1409 837 @Override
jjg@1409 838 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 839 return v.visitVersion(this, d);
jjg@1409 840 }
jjg@1409 841
jjg@1409 842 @Override
jjg@1409 843 public List<? extends DocTree> getBody() {
jjg@1409 844 return body;
jjg@1409 845 }
jjg@1409 846 }
jjg@1409 847
jjg@1409 848 }

mercurial