/** * Display information * * @param io.StringWriter $out * @return void */ public function display($out) { $out->write(self::declarationOf($this->mirror)); $parent = $this->mirror->parent(); if ('lang.Enum' !== $parent->name()) { $this->displayExtensions([$parent], $out, 'extends'); } $this->displayExtensions($this->mirror->interfaces()->declared(), $out, 'implements'); $separator = false; $out->writeLine(' {'); $this->displayMembers($this->mirror->constants(), $out, $separator); foreach (Enum::valuesOf($this->mirror->type()) as $member) { $out->write(' ', $member->name(), '(', $member->ordinal(), ')'); $mirror = new TypeMirror(typeof($member)); if ($mirror->isSubtypeOf($this->mirror)) { $out->writeLine(' {'); foreach ($mirror->methods()->declared() as $method) { $out->writeLine(' ', (string) $method); } $separator = true; $out->writeLine(' }'); } else { $out->writeLine(); $separator = true; } } $constructor = $this->mirror->constructor(); if ($constructor->present()) { $this->displayMembers([$constructor], $out, $separator); } $this->displayMembers($this->mirror->methods()->all(Methods::ofClass()), $out, $separator); $this->displayMembers($this->mirror->methods()->all(Methods::ofInstance()), $out, $separator); $out->writeLine('}'); }
/** @return var[][] */ private function targets() { $mirror = new TypeMirror(FixtureHackAnnotations::class, $this->source()); return [[$mirror], [$mirror->constructor()], [$mirror->fields()->named('field')], [$mirror->methods()->named('method')], [$mirror->methods()->named('method')->parameters()->named('param')]]; }
/** @return var[][] */ private function targets($name) { $mirror = new TypeMirror(FixtureHackTypedClass::class, $this->source()); return [[$mirror->fields()->named($name)->type(), 'field'], [$mirror->methods()->named($name)->returns(), 'method'], [$mirror->methods()->named('parameters')->parameters()->named($name)->type(), 'param']]; }