Skip to content

Commit 3eefff2

Browse files
committed
tests for Javap filter selection
1 parent 36a9194 commit 3eefff2

File tree

1 file changed

+193
-0
lines changed

1 file changed

+193
-0
lines changed

compiler/test/dotty/tools/repl/DisassemblerTests.scala

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,3 +295,196 @@ class JavapTests extends DisassemblerTest:
295295
assertDisassemblyIncludes("public java.lang.String trim();", out)
296296
}
297297
end JavapTests
298+
299+
// Test output filters
300+
class JavapFilterSelectionTests:
301+
// test -sysinfo disassembly
302+
private val listSysinfo =
303+
""" Size 51190 bytes
304+
| MD5 checksum fa1f9a810f5fff1bac4c3d1ae2051ab5
305+
| Compiled from "List.scala"
306+
|public abstract class scala.collection.immutable.List<A> extends scala.collection.immutable.AbstractSeq<A> implements scala.collection.immutable.LinearSeq<A>, scala.collection.StrictOptimizedLinearSeqOps<A, scala.collection.immutable.List, scala.collection.immutable.List<A>>, scala.collection.immutable.StrictOptimizedSeqOps<A, scala.collection.immutable.List, scala.collection.immutable.List<A>>, scala.collection.generic.DefaultSerializable {
307+
| public static scala.collection.SeqOps unapplySeq(scala.collection.SeqOps);
308+
| public scala.collection.LinearSeq drop(int);
309+
| public scala.collection.LinearSeq dropWhile(scala.Function1);
310+
| public java.lang.Object drop(int);
311+
| public java.lang.Object sorted(scala.math.Ordering);
312+
|}
313+
""".stripMargin
314+
315+
@Test
316+
def `select drop from listSysinfo`: Unit =
317+
assertEquals(
318+
"""| public scala.collection.LinearSeq drop(int);
319+
| public java.lang.Object drop(int);
320+
|""".stripMargin,
321+
Javap.filterSelection("List#drop")(listSysinfo))
322+
323+
// test -l disassembly
324+
private val listL =
325+
"""Compiled from "List.scala"
326+
|public abstract class scala.collection.immutable.List<A> extends scala.collection.immutable.AbstractSeq<A> implements scala.collection.immutable.LinearSeq<A>, scala.collection.StrictOptimizedLinearSeqOps<A, scala.collection.immutable.List, scala.collection.immutable.List<A>>, scala.collection.immutable.StrictOptimizedSeqOps<A, scala.collection.immutable.List, scala.collection.immutable.List<A>>, scala.collection.generic.DefaultSerializable {
327+
| public static scala.collection.SeqOps unapplySeq(scala.collection.SeqOps);
328+
| LineNumberTable:
329+
| line 648: 4
330+
|
331+
| public scala.collection.LinearSeq drop(int);
332+
| LineNumberTable:
333+
| line 79: 0
334+
| LocalVariableTable:
335+
| Start Length Slot Name Signature
336+
| 0 6 0 this Lscala/collection/immutable/List;
337+
| 0 6 1 n I
338+
|
339+
| public scala.collection.LinearSeq dropWhile(scala.Function1);
340+
| LineNumberTable:
341+
| line 79: 0
342+
| LocalVariableTable:
343+
| Start Length Slot Name Signature
344+
| 0 6 0 this Lscala/collection/immutable/List;
345+
| 0 6 1 p Lscala/Function1;
346+
|
347+
| public java.lang.Object drop(int);
348+
| LineNumberTable:
349+
| line 79: 0
350+
| LocalVariableTable:
351+
| Start Length Slot Name Signature
352+
| 0 6 0 this Lscala/collection/immutable/List;
353+
| 0 6 1 n I
354+
|
355+
| public java.lang.Object sorted(scala.math.Ordering);
356+
| LineNumberTable:
357+
| line 79: 0
358+
| LocalVariableTable:
359+
| Start Length Slot Name Signature
360+
| 0 6 0 this Lscala/collection/immutable/List;
361+
| 0 6 1 ord Lscala/math/Ordering;
362+
|}
363+
""".stripMargin
364+
365+
@Test
366+
def `select drop from listL`: Unit =
367+
assertEquals(
368+
"""| public scala.collection.LinearSeq drop(int);
369+
| LineNumberTable:
370+
| line 79: 0
371+
| LocalVariableTable:
372+
| Start Length Slot Name Signature
373+
| 0 6 0 this Lscala/collection/immutable/List;
374+
| 0 6 1 n I
375+
| public java.lang.Object drop(int);
376+
| LineNumberTable:
377+
| line 79: 0
378+
| LocalVariableTable:
379+
| Start Length Slot Name Signature
380+
| 0 6 0 this Lscala/collection/immutable/List;
381+
| 0 6 1 n I
382+
|""".stripMargin,
383+
Javap.filterSelection("List#drop")(listL))
384+
385+
// test -v disassembly // TODO implement
386+
private val listV =
387+
"""|
388+
""".stripMargin
389+
390+
// test -s disassembly
391+
private val listS =
392+
"""Compiled from "List.scala"
393+
|public abstract class scala.collection.immutable.List<A> extends scala.collection.immutable.AbstractSeq<A> implements scala.collection.immutable.LinearSeq<A>, scala.collection.StrictOptimizedLinearSeqOps<A, scala.collection.immutable.List, scala.collection.immutable.List<A>>, scala.collection.immutable.StrictOptimizedSeqOps<A, scala.collection.immutable.List, scala.collection.immutable.List<A>>, scala.collection.generic.DefaultSerializable {
394+
| public static scala.collection.SeqOps unapplySeq(scala.collection.SeqOps);
395+
| descriptor: (Lscala/collection/SeqOps;)Lscala/collection/SeqOps;
396+
|
397+
| public scala.collection.LinearSeq drop(int);
398+
| descriptor: (I)Lscala/collection/LinearSeq;
399+
|
400+
| public scala.collection.LinearSeq dropWhile(scala.Function1);
401+
| descriptor: (Lscala/Function1;)Lscala/collection/LinearSeq;
402+
|
403+
| public java.lang.Object drop(int);
404+
| descriptor: (I)Ljava/lang/Object;
405+
|
406+
| public java.lang.Object sorted(scala.math.Ordering);
407+
| descriptor: (Lscala/math/Ordering;)Ljava/lang/Object;
408+
|}
409+
""".stripMargin
410+
411+
@Test
412+
def `select drop from listS`: Unit =
413+
assertEquals(
414+
"""| public scala.collection.LinearSeq drop(int);
415+
| descriptor: (I)Lscala/collection/LinearSeq;
416+
| public java.lang.Object drop(int);
417+
| descriptor: (I)Ljava/lang/Object;
418+
|""".stripMargin,
419+
Javap.filterSelection("List#drop")(listS))
420+
421+
private val listC =
422+
"""Compiled from "List.scala"
423+
|public abstract class scala.collection.immutable.List<A> extends scala.collection.immutable.AbstractSeq<A> implements scala.collection.immutable.LinearSeq<A>, scala.collection.StrictOptimizedLinearSeqOps<A, scala.collection.immutable.List, scala.collection.immutable.List<A>>, scala.collection.immutable.StrictOptimizedSeqOps<A, scala.collection.immutable.List, scala.collection.immutable.List<A>>, scala.collection.generic.DefaultSerializable {
424+
| public static scala.collection.SeqOps unapplySeq(scala.collection.SeqOps);
425+
| Code:
426+
| 0: getstatic #43 // Field scala/collection/immutable/List$.MODULE$:Lscala/collection/immutable/List$;
427+
| 3: pop
428+
| 4: aload_0
429+
| 5: areturn
430+
|
431+
| public scala.collection.LinearSeq drop(int);
432+
| Code:
433+
| 0: aload_0
434+
| 1: iload_1
435+
| 2: invokestatic #223 // InterfaceMethod scala/collection/StrictOptimizedLinearSeqOps.drop$:(Lscala/collection/StrictOptimizedLinearSeqOps;I)Lscala/collection/LinearSeq;
436+
| 5: areturn
437+
|
438+
| public scala.collection.LinearSeq dropWhile(scala.Function1);
439+
| Code:
440+
| 0: aload_0
441+
| 1: aload_1
442+
| 2: invokestatic #230 // InterfaceMethod scala/collection/StrictOptimizedLinearSeqOps.dropWhile$:(Lscala/collection/StrictOptimizedLinearSeqOps;Lscala/Function1;)Lscala/collection/LinearSeq;
443+
| 5: areturn
444+
|
445+
| public java.lang.Object drop(int);
446+
| Code:
447+
| 0: aload_0
448+
| 1: iload_1
449+
| 2: invokevirtual #792 // Method drop:(I)Lscala/collection/LinearSeq;
450+
| 5: areturn
451+
|
452+
| public java.lang.Object sorted(scala.math.Ordering);
453+
| Code:
454+
| 0: aload_0
455+
| 1: aload_1
456+
| 2: invokestatic #210 // InterfaceMethod scala/collection/immutable/StrictOptimizedSeqOps.sorted$:(Lscala/collection/immutable/StrictOptimizedSeqOps;Lscala/math/Ordering;)Ljava/lang/Object;
457+
| 5: areturn
458+
|}
459+
""".stripMargin
460+
461+
@Test
462+
def `select drop from List disassembly`: Unit =
463+
assertEquals(
464+
"""| public scala.collection.LinearSeq drop(int);
465+
| Code:
466+
| 0: aload_0
467+
| 1: iload_1
468+
| 2: invokestatic #223 // InterfaceMethod scala/collection/StrictOptimizedLinearSeqOps.drop$:(Lscala/collection/StrictOptimizedLinearSeqOps;I)Lscala/collection/LinearSeq;
469+
| 5: areturn
470+
| public java.lang.Object drop(int);
471+
| Code:
472+
| 0: aload_0
473+
| 1: iload_1
474+
| 2: invokevirtual #792 // Method drop:(I)Lscala/collection/LinearSeq;
475+
| 5: areturn
476+
|""".stripMargin,
477+
Javap.filterSelection("List#drop")(listC))
478+
479+
@Test
480+
def `select last method from disassembly`: Unit =
481+
assertEquals(
482+
"""| public java.lang.Object sorted(scala.math.Ordering);
483+
| Code:
484+
| 0: aload_0
485+
| 1: aload_1
486+
| 2: invokestatic #210 // InterfaceMethod scala/collection/immutable/StrictOptimizedSeqOps.sorted$:(Lscala/collection/immutable/StrictOptimizedSeqOps;Lscala/math/Ordering;)Ljava/lang/Object;
487+
| 5: areturn
488+
|""".stripMargin,
489+
Javap.filterSelection("List#sorted")(listC))
490+
end JavapFilterSelectionTests

0 commit comments

Comments
 (0)