Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:78824 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 70532 invoked from network); 6 Nov 2014 18:45:15 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 6 Nov 2014 18:45:15 -0000 Authentication-Results: pb1.pair.com smtp.mail=dmitry@zend.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=dmitry@zend.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 209.85.218.47 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 209.85.218.47 mail-oi0-f47.google.com Received: from [209.85.218.47] ([209.85.218.47:64110] helo=mail-oi0-f47.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 9E/90-65179-9B1CB545 for ; Thu, 06 Nov 2014 13:45:14 -0500 Received: by mail-oi0-f47.google.com with SMTP id a3so1226761oib.34 for ; Thu, 06 Nov 2014 10:45:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=WU+yZTflO0A5mZtFmMGoa08Zp+y1++QgOzP0qpsG578=; b=ObiTZl96AJYDbOlIHqY8DW42hWZlqahIXkSnHk3m/ntP/ChMHImsu+JivoPyveQYdW JMK9yHULRsxpimebhI4T+F+Vv618RBSbmpzbkW/jZlfW8b5i+qfUWCR22Q/IKSTPRW5b qdRRyVVRiwXxhl+2waZAQBzALWvaLiMy6TqoZk++0rd5CjPYZ1gLWP6mkuoy/PExLyeY e7pSaPCpONnrLgCKFnSyvDvOssUjWK1DCKtENqiQ03pbG1eCwDoR33rGJsZu4iXJQWOB VS0hFoTW5ARLnvn/bp3LPVwSaQ2thyO/wIxAURruivIIxa3Maz6JTeSNeGN2tlgehl3M WBkw== X-Gm-Message-State: ALoCoQl1AKNM8m3tgYdtJH5IEpVc/XLSJmefumcPB8uioLLdD+WSEJ5Naj57yvDl9czgrKR9M9ru3p52oVa2JZtUJQ5eNKEiL+OvN/NIM7Z9TauW61giiGc2/9KkAgtCeYbKqgXuyNwsqq8NpcY057/LYax/Jkg39w== MIME-Version: 1.0 X-Received: by 10.202.195.15 with SMTP id t15mr866897oif.121.1415299510946; Thu, 06 Nov 2014 10:45:10 -0800 (PST) Received: by 10.60.70.41 with HTTP; Thu, 6 Nov 2014 10:45:10 -0800 (PST) In-Reply-To: <80CC92E1-A1EF-4916-BCB3-ACB1DDBE623B@ajf.me> References: <5B1B375C-328B-40BD-B715-8EDA158B44CE@ajf.me> <545A912A.2050202@sugarcrm.com> <545AA193.6060606@sugarcrm.com> <3E396F3F-CD59-4198-8FD2-1A8C4ED3B87A@ajf.me> <5BB43ECD-089D-4DDD-AD95-1263B05279CB@ajf.me> <80CC92E1-A1EF-4916-BCB3-ACB1DDBE623B@ajf.me> Date: Thu, 6 Nov 2014 22:45:10 +0400 Message-ID: To: Andrea Faulds Cc: Levi Morrison , Stas Malyshev , internals , Nikita Popov Content-Type: multipart/alternative; boundary=001a11c17b7e99ea5a05073518e5 Subject: Re: [PHP-DEV] [RFC][Vote] Return Types From: dmitry@zend.com (Dmitry Stogov) --001a11c17b7e99ea5a05073518e5 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable It fails because class C is not known at the point when we check if A::foo() is compatible with B::foo(). The relation between C and B doesn't really matter in this case (I may provide another example with relation that must be supported). Thanks. Dmitry. On Thu, Nov 6, 2014 at 6:15 PM, Andrea Faulds wrote: > > > On 6 Nov 2014, at 15:08, Dmitry Stogov wrote: > > > > Use A or B for return type in B::foo(). It'll lead to compile error > anyway (Class C is not defined). > > It's not possible to compile this by design. > > Ok, let=E2=80=99s try this: > > class A { > function foo(): C {} > } > class B extends A { > function foo(): B {} > } > class C extends B { > function foo(): C {} > } > ?> > > I don=E2=80=99t think this can=E2=80=99t be compiled. When you get to B, = you know that A > doesn=E2=80=99t extend anything, and B doesn=E2=80=99t extend C, so C can= =E2=80=99t possibly be a > superclass of B, and it would fail, right? > > -- > Andrea Faulds > http://ajf.me/ > > > > > --001a11c17b7e99ea5a05073518e5--