@@ -42,18 +42,22 @@ trait DottyDocTest extends DottyTest { self =>
42
42
assert(false , s """ No docstring found, expected: " $expected" """ )
43
43
}
44
44
45
- def run (): Unit = {
45
+ def run (): Unit = try {
46
46
val c = compiler(assertion)
47
47
c.rootContext(ctx)
48
48
c.newRun.compile(source)
49
49
println(s " ${self.getClass.getSimpleName.split(" \\ $" ).last} passed " )
50
+ } catch { case e : Throwable =>
51
+ Console .err.println(s " ${self.getClass.getSimpleName.split(" \\ $" ).last} failed " )
52
+ throw e
50
53
}
51
54
}
52
55
53
56
/** Add tests to the `tests` sequence */
54
57
object DottyDocTests extends DottyTest {
55
58
private [this ] val tests = Seq (
56
59
NoComment ,
60
+
57
61
SingleClassInPackage ,
58
62
MultipleOpenedOnSingleClassInPackage ,
59
63
MultipleClassesInPackage ,
@@ -67,13 +71,18 @@ object DottyDocTests extends DottyTest {
67
71
ObjectsNestedClass ,
68
72
PackageObject ,
69
73
MultipleDocStringsBeforeEntity ,
70
- MultipleDocStringsBeforeAndAfter
74
+ MultipleDocStringsBeforeAndAfter ,
75
+
76
+ ValuesWithDocString ,
77
+ VarsWithDocString ,
78
+ DefsWithDocString ,
79
+ TypesWithDocString
71
80
)
72
81
73
82
def main (args : Array [String ]): Unit = {
74
- println(" ------------ Testing DottyDoc ------------" )
83
+ println(s " -------------- Testing DottyDoc ( ${tests.length} tests) -- ------------" )
75
84
tests.foreach(_.run)
76
- println(" --------- DottyDoc tests passed! ----------" )
85
+ println(" --------------- DottyDoc tests passed! --------- ----------" )
77
86
}
78
87
}
79
88
@@ -371,3 +380,127 @@ case object MultipleDocStringsBeforeAndAfter extends DottyDocTest {
371
380
}
372
381
373
382
}
383
+
384
+ case object ValuesWithDocString extends DottyDocTest {
385
+ override val source =
386
+ """
387
+ |object Object {
388
+ | /** val1 */
389
+ | val val1 = 1
390
+ |
391
+ | /** val2 */
392
+ | val val2: Int = 2
393
+ | /** bogus docstring */
394
+ |
395
+ | /** bogus docstring */
396
+ | /** val3 */
397
+ | val val3: List[Int] = 1 :: 2 :: 3 :: Nil
398
+ |}
399
+ """ .stripMargin
400
+
401
+ import dotty .tools .dotc .ast .untpd ._
402
+ override def assertion = {
403
+ case PackageDef (_, Seq (o : ModuleDef )) =>
404
+ o.impl.body match {
405
+ case (v1 : MemberDef ) :: (v2 : MemberDef ) :: (v3 : MemberDef ) :: Nil => {
406
+ checkDocString(v1.rawComment, " /** val1 */" )
407
+ checkDocString(v2.rawComment, " /** val2 */" )
408
+ checkDocString(v3.rawComment, " /** val3 */" )
409
+ }
410
+ case _ => assert(false , " Incorrect structure inside object" )
411
+ }
412
+ }
413
+ }
414
+
415
+ case object VarsWithDocString extends DottyDocTest {
416
+ override val source =
417
+ """
418
+ |object Object {
419
+ | /** var1 */
420
+ | var var1 = 1
421
+ |
422
+ | /** var2 */
423
+ | var var2: Int = 2
424
+ | /** bogus docstring */
425
+ |
426
+ | /** bogus docstring */
427
+ | /** var3 */
428
+ | var var3: List[Int] = 1 :: 2 :: 3 :: Nil
429
+ |}
430
+ """ .stripMargin
431
+
432
+ import dotty .tools .dotc .ast .untpd ._
433
+ override def assertion = {
434
+ case PackageDef (_, Seq (o : ModuleDef )) =>
435
+ o.impl.body match {
436
+ case (v1 : MemberDef ) :: (v2 : MemberDef ) :: (v3 : MemberDef ) :: Nil => {
437
+ checkDocString(v1.rawComment, " /** var1 */" )
438
+ checkDocString(v2.rawComment, " /** var2 */" )
439
+ checkDocString(v3.rawComment, " /** var3 */" )
440
+ }
441
+ case _ => assert(false , " Incorrect structure inside object" )
442
+ }
443
+ }
444
+ }
445
+
446
+ case object DefsWithDocString extends DottyDocTest {
447
+ override val source =
448
+ """
449
+ |object Object {
450
+ | /** def1 */
451
+ | def def1 = 1
452
+ |
453
+ | /** def2 */
454
+ | def def2: Int = 2
455
+ | /** bogus docstring */
456
+ |
457
+ | /** bogus docstring */
458
+ | /** def3 */
459
+ | def def3: List[Int] = 1 :: 2 :: 3 :: Nil
460
+ |}
461
+ """ .stripMargin
462
+
463
+ import dotty .tools .dotc .ast .untpd ._
464
+ override def assertion = {
465
+ case PackageDef (_, Seq (o : ModuleDef )) =>
466
+ o.impl.body match {
467
+ case (v1 : MemberDef ) :: (v2 : MemberDef ) :: (v3 : MemberDef ) :: Nil => {
468
+ checkDocString(v1.rawComment, " /** def1 */" )
469
+ checkDocString(v2.rawComment, " /** def2 */" )
470
+ checkDocString(v3.rawComment, " /** def3 */" )
471
+ }
472
+ case _ => assert(false , " Incorrect structure inside object" )
473
+ }
474
+ }
475
+ }
476
+
477
+ case object TypesWithDocString extends DottyDocTest {
478
+ override val source =
479
+ """
480
+ |object Object {
481
+ | /** type1 */
482
+ | type T1 = Int
483
+ |
484
+ | /** type2 */
485
+ | type T2 = String
486
+ | /** bogus docstring */
487
+ |
488
+ | /** bogus docstring */
489
+ | /** type3 */
490
+ | type T3 = T2
491
+ |}
492
+ """ .stripMargin
493
+
494
+ import dotty .tools .dotc .ast .untpd ._
495
+ override def assertion = {
496
+ case PackageDef (_, Seq (o : ModuleDef )) =>
497
+ o.impl.body match {
498
+ case (v1 : MemberDef ) :: (v2 : MemberDef ) :: (v3 : MemberDef ) :: Nil => {
499
+ checkDocString(v1.rawComment, " /** type1 */" )
500
+ checkDocString(v2.rawComment, " /** type2 */" )
501
+ checkDocString(v3.rawComment, " /** type3 */" )
502
+ }
503
+ case _ => assert(false , " Incorrect structure inside object" )
504
+ }
505
+ }
506
+ }
0 commit comments