1. my class Instant { ... }
  2. class IO::Special does IO {
  3. has Str $.what;
  4. method new(\what) {
  5. nqp::p6bindattrinvres(nqp::create(self),self,'$!what',what)
  6. }
  7. multi method WHICH(IO::Special:D:) { "IO::Special$!what" }
  8. multi method Str (IO::Special:D:) { $!what }
  9. multi method perl (IO::Special:D:) { "{self.^name}.new({$!what.perl})" }
  10. method IO(IO::Special:D:) { self }
  11. method e(IO::Special:D: --> True) { }
  12. method d(IO::Special:D: --> False) { }
  13. method f(IO::Special:D: --> False) { }
  14. method s(IO::Special:D:--> 0) { }
  15. method l(IO::Special:D: --> False) { }
  16. method r(IO::Special:D:) { $!what eq '<STDIN>' }
  17. method w(IO::Special:D:) { $!what eq '<STDOUT>' or $!what eq '<STDERR>' }
  18. method x(IO::Special:D: --> False) { }
  19. method modified(IO::Special:D: --> Instant) { Instant }
  20. method accessed(IO::Special:D: --> Instant) { Instant }
  21. method changed( IO::Special:D: --> Instant) { Instant }
  22. method mode(IO::Special:D: --> Nil) { }
  23. }