[Mono-list] [patch] mcs and nested types

Matt Kimball matt@kimball.net
Mon, 07 Jan 2002 19:21:24 -0800 (PST)


This is a multi-part message in MIME format...

------------=_1010460084-21945-0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: binary

mcs has compile errors with the following code:

  using System;

  public class outer {
	public class inner {
		public void meth(Object o) {
			inner inst = (inner)o;
		}
	}
  }

This seems to be because RootContext.LookupType will only look for the "inner"
type declared in the innermost class containing the compiled method.  Included
is a patch against current CVS code, which fixes this problem:  LookupType will
now cascade up the tree of containing types looking for the type name specified.
 In order to implement this, I reorganized things so that DeclSpace objects
always know their parents.  (Before, only TypeContainer objects knew their
parents, not DeclSpace objects in general).

With this fix, mcs can now compile the "WordCount" demo appliction which comes
with the .NET SDK.  Before, mcs would error out.

-- 
Matt Kimball
matt@kimball.net



------------=_1010460084-21945-0
Content-Type: application/octet-stream; name="mcs-nest-types.patch"
Content-Disposition: attachment; filename="mcs-nest-types.patch"
Content-Transfer-Encoding: base64

SW5kZXg6IGNsYXNzLmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9tb25vL21jcy9tY3MvY2xhc3MuY3MsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMTQ4CmRpZmYgLXUgLXIxLjE0OCBjbGFzcy5jcwotLS0gY2xhc3Mu
Y3MJNyBKYW4gMjAwMiAyMjo0NzowMyAtMDAwMAkxLjE0OAorKysgY2xhc3Mu
Y3MJOCBKYW4gMjAwMiAwMzoxMzo1NCAtMDAwMApAQCAtNzksNyArNzksNiBA
QAogCQkvLwogCQlzdHJpbmcgICAgIGJhc2VfY2xhc3NfbmFtZTsKIAotCQlU
eXBlQ29udGFpbmVyIHBhcmVudDsKIAkJQXJyYXlMaXN0IHR5cGVfYmFzZXM7
CiAKIAkJLy8gQXR0cmlidXRlcyBmb3IgdGhpcyB0eXBlCkBAIC05MywxMSAr
OTIsMTAgQEAKIAkJCiAKIAkJcHVibGljIFR5cGVDb250YWluZXIgKFR5cGVD
b250YWluZXIgcGFyZW50LCBzdHJpbmcgbmFtZSwgTG9jYXRpb24gbCkKLQkJ
CTogYmFzZSAobmFtZSwgbCkKKwkJCTogYmFzZSAocGFyZW50LCBuYW1lLCBs
KQogCQl7CiAJCQlzdHJpbmcgbjsKIAkJCXR5cGVzID0gbmV3IEFycmF5TGlz
dCAoKTsKLQkJCXRoaXMucGFyZW50ID0gcGFyZW50OwogCiAJCQlpZiAocGFy
ZW50ID09IG51bGwpCiAJCQkJbiA9ICIiOwpAQCAtMzQ1LDEyICszNDMsNiBA
QAogCQkJcmV0dXJuIEFkZGl0aW9uUmVzdWx0LlN1Y2Nlc3M7CiAJCX0KIAkJ
Ci0JCXB1YmxpYyBUeXBlQ29udGFpbmVyIFBhcmVudCB7Ci0JCQlnZXQgewot
CQkJCXJldHVybiBwYXJlbnQ7Ci0JCQl9Ci0JCX0KLQogCQlwdWJsaWMgQXJy
YXlMaXN0IFR5cGVzIHsKIAkJCWdldCB7CiAJCQkJcmV0dXJuIHR5cGVzOwpA
QCAtNDUyLDggKzQ0NCw4IEBACiAJCS8vCiAJCXB1YmxpYyBib29sIElzVG9w
TGV2ZWwgewogCQkJZ2V0IHsKLQkJCQlpZiAocGFyZW50ICE9IG51bGwpewot
CQkJCQlpZiAocGFyZW50LlBhcmVudCA9PSBudWxsKQorCQkJCWlmIChQYXJl
bnQgIT0gbnVsbCl7CisJCQkJCWlmIChQYXJlbnQuUGFyZW50ID09IG51bGwp
CiAJCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQl9CiAJCQkJcmV0dXJuIGZhbHNl
OwpJbmRleDogY3MtcGFyc2VyLmpheQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvbW9uby9tY3MvbWNzL2NzLXBhcnNlci5qYXksdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuMTI3CmRpZmYgLXUgLXIxLjEyNyBjcy1wYXJz
ZXIuamF5Ci0tLSBjcy1wYXJzZXIuamF5CTcgSmFuIDIwMDIgMjI6NDc6MDMg
LTAwMDAJMS4xMjcKKysrIGNzLXBhcnNlci5qYXkJOCBKYW4gMjAwMiAwMzox
NDoxNCAtMDAwMApAQCAtMTU1Myw3ICsxNTUzLDcgQEAKIAkgIG9wdF9zZW1p
Y29sb24KIAkgIHsgCiAJCXN0cmluZyBmdWxsX25hbWUgPSBNYWtlTmFtZSAo
KHN0cmluZykgJDQpOwotCQlFbnVtIGUgPSBuZXcgRW51bSAoKHN0cmluZykg
JDUsIChpbnQpICQyLCBmdWxsX25hbWUsIChBdHRyaWJ1dGVzKSAkMSwgbGV4
ZXIuTG9jYXRpb24pOworCQlFbnVtIGUgPSBuZXcgRW51bSAoY3VycmVudF9j
b250YWluZXIsIChzdHJpbmcpICQ1LCAoaW50KSAkMiwgZnVsbF9uYW1lLCAo
QXR0cmlidXRlcykgJDEsIGxleGVyLkxvY2F0aW9uKTsKIAogCQlmb3JlYWNo
IChWYXJpYWJsZURlY2xhcmF0aW9uIGV2IGluIChBcnJheUxpc3QpICQ2KXsK
IAkJCUNoZWNrRGVmIChlLkFkZEVudW1NZW1iZXIgKGV2LmlkZW50aWZpZXIs
IApJbmRleDogZGVjbC5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvbW9uby9tY3MvbWNzL2RlY2wuY3MsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMTMKZGlmZiAtdSAtcjEuMTMgZGVjbC5jcwotLS0gZGVjbC5jcwky
OSBEZWMgMjAwMSAyMDoyNTo1NiAtMDAwMAkxLjEzCisrKyBkZWNsLmNzCTgg
SmFuIDIwMDIgMDM6MTQ6MTUgLTAwMDAKQEAgLTE3MCwxMSArMTcwLDE0IEBA
CiAJCS8vLyA8L3N1bW1hcnk+CiAJCXByb3RlY3RlZCBIYXNodGFibGUgZGVm
aW5lZF9uYW1lczsKIAotCQlwdWJsaWMgRGVjbFNwYWNlIChzdHJpbmcgbmFt
ZSwgTG9jYXRpb24gbCkKKwkJVHlwZUNvbnRhaW5lciBwYXJlbnQ7CQkKKwor
CQlwdWJsaWMgRGVjbFNwYWNlIChUeXBlQ29udGFpbmVyIHBhcmVudCwgc3Ry
aW5nIG5hbWUsIExvY2F0aW9uIGwpCiAJCQk6IGJhc2UgKG5hbWUsIGwpCiAJ
CXsKIAkJCUJhc2VuYW1lID0gbmFtZS5TdWJzdHJpbmcgKDEgKyBuYW1lLkxh
c3RJbmRleE9mICgnLicpKTsKIAkJCWRlZmluZWRfbmFtZXMgPSBuZXcgSGFz
aHRhYmxlICgpOworCQkJdGhpcy5wYXJlbnQgPSBwYXJlbnQ7CiAJCX0KIAog
CQkvLy8gPHN1bW1hcnk+CkBAIC0yMjUsNiArMjI4LDEyIEBACiAKIAkJCXNl
dCB7CiAJCQkJZGVmaW5pdGlvbiA9IHZhbHVlOworCQkJfQorCQl9CisKKwkJ
cHVibGljIFR5cGVDb250YWluZXIgUGFyZW50IHsKKwkJCWdldCB7CisJCQkJ
cmV0dXJuIHBhcmVudDsKIAkJCX0KIAkJfQogCkluZGV4OiBlbnVtLmNzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9tb25vL21jcy9tY3Mv
ZW51bS5jcyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMwpkaWZmIC11IC1y
MS4zMyBlbnVtLmNzCi0tLSBlbnVtLmNzCTI4IERlYyAyMDAxIDIwOjUzOjEx
IC0wMDAwCTEuMzMKKysrIGVudW0uY3MJOCBKYW4gMjAwMiAwMzoxNDoxNyAt
MDAwMApAQCAtNDMsOCArNDMsOCBAQAogCQkJTW9kaWZpZXJzLklOVEVSTkFM
IHwKIAkJCU1vZGlmaWVycy5QUklWQVRFOwogCi0JCXB1YmxpYyBFbnVtIChz
dHJpbmcgdHlwZSwgaW50IG1vZF9mbGFncywgc3RyaW5nIG5hbWUsIEF0dHJp
YnV0ZXMgYXR0cnMsIExvY2F0aW9uIGwpCi0JCQk6IGJhc2UgKG5hbWUsIGwp
CisJCXB1YmxpYyBFbnVtIChUeXBlQ29udGFpbmVyIHBhcmVudCwgc3RyaW5n
IHR5cGUsIGludCBtb2RfZmxhZ3MsIHN0cmluZyBuYW1lLCBBdHRyaWJ1dGVz
IGF0dHJzLCBMb2NhdGlvbiBsKQorCQkJOiBiYXNlIChwYXJlbnQsIG5hbWUs
IGwpCiAJCXsKIAkJCXRoaXMuQmFzZVR5cGUgPSB0eXBlOwogCQkJTW9kRmxh
Z3MgPSBNb2RpZmllcnMuQ2hlY2sgKEFsbG93ZWRNb2RpZmllcnMsIG1vZF9m
bGFncywgTW9kaWZpZXJzLlBVQkxJQyk7CkluZGV4OiBpbnRlcmZhY2UuY3MK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL21vbm8vbWNzL21j
cy9pbnRlcmZhY2UuY3MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzAKZGlm
ZiAtdSAtcjEuMzAgaW50ZXJmYWNlLmNzCi0tLSBpbnRlcmZhY2UuY3MJNCBK
YW4gMjAwMiAwNDo0Mjo0NiAtMDAwMAkxLjMwCisrKyBpbnRlcmZhY2UuY3MJ
OCBKYW4gMjAwMiAwMzoxNDoxOSAtMDAwMApAQCAtNDUsOCArNDUsNiBAQAog
CQlBcnJheUxpc3QgbWV0aG9kX2J1aWxkZXJzOwogCQlBcnJheUxpc3QgcHJv
cGVydHlfYnVpbGRlcnM7CiAJCQotCQlUeXBlQ29udGFpbmVyIHBhcmVudDsK
LQogCQlBdHRyaWJ1dGVzIE9wdEF0dHJpYnV0ZXM7CiAKIAkJLy8gVGhlc2Ug
d2lsbCBoYXBwZW4gYWZ0ZXIgdGhlIHNlbWFudGljIGFuYWx5c2lzCkBAIC02
NSwxMCArNjMsOSBAQAogCQkJTW9kaWZpZXJzLlBSSVZBVEU7CiAKIAkJcHVi
bGljIEludGVyZmFjZSAoVHlwZUNvbnRhaW5lciBwYXJlbnQsIHN0cmluZyBu
YW1lLCBpbnQgbW9kLCBBdHRyaWJ1dGVzIGF0dHJzLCBMb2NhdGlvbiBsKQot
CQkJOiBiYXNlIChuYW1lLCBsKQorCQkJOiBiYXNlIChwYXJlbnQsIG5hbWUs
IGwpCiAJCXsKIAkJCU1vZEZsYWdzID0gTW9kaWZpZXJzLkNoZWNrIChBbGxv
d2VkTW9kaWZpZXJzLCBtb2QsIE1vZGlmaWVycy5QUklWQVRFKTsKLQkJCXRo
aXMucGFyZW50ID0gcGFyZW50OwogCQkJT3B0QXR0cmlidXRlcyA9IGF0dHJz
OwogCQkJCiAJCQltZXRob2RfYnVpbGRlcnMgPSBuZXcgQXJyYXlMaXN0ICgp
OwpAQCAtMTc0LDggKzE3MSw4IEBACiAKIAkJcHVibGljIGJvb2wgSXNUb3BM
ZXZlbCB7CiAJCQlnZXQgewotCQkJCWlmIChwYXJlbnQgIT0gbnVsbCl7Ci0J
CQkJCWlmIChwYXJlbnQuUGFyZW50ID09IG51bGwpCisJCQkJaWYgKFBhcmVu
dCAhPSBudWxsKXsKKwkJCQkJaWYgKFBhcmVudC5QYXJlbnQgPT0gbnVsbCkK
IAkJCQkJCXJldHVybiB0cnVlOwogCQkJCX0KIAkJCQlyZXR1cm4gZmFsc2U7
CkBAIC0zNzMsNyArMzcwLDcgQEAKIAkJCQlQYXJhbWV0ZXIgW10gcGFybXMg
PSBuZXcgUGFyYW1ldGVyIFsxXTsKIAkJCQlwYXJtcyBbMF0gPSBuZXcgUGFy
YW1ldGVyIChpcC5UeXBlLCAidmFsdWUiLCBQYXJhbWV0ZXIuTW9kaWZpZXIu
Tk9ORSwgbnVsbCk7CiAJCQkJSW50ZXJuYWxQYXJhbWV0ZXJzIGlwcCA9IG5l
dyBJbnRlcm5hbFBhcmFtZXRlcnMgKAotCQkJCQlwYXJlbnQsIG5ldyBQYXJh
bWV0ZXJzIChwYXJtcywgbnVsbCwgTG9jYXRpb24uTnVsbCkpOworCQkJCQlQ
YXJlbnQsIG5ldyBQYXJhbWV0ZXJzIChwYXJtcywgbnVsbCwgTG9jYXRpb24u
TnVsbCkpOwogCQkJCQkKIAkJCQlpZiAoIVJlZ2lzdGVyTWV0aG9kIChzZXQs
IGlwcCwgc2V0dGVyX2FyZ3MpKSB7CiAJCQkJCUVycm9yMTExIChpcCk7Cklu
ZGV4OiByb290Y29udGV4dC5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvbW9uby9tY3MvbWNzL3Jvb3Rjb250ZXh0LmNzLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjU3CmRpZmYgLXUgLXIxLjU3IHJvb3Rjb250ZXh0
LmNzCi0tLSByb290Y29udGV4dC5jcwkyOCBEZWMgMjAwMSAyMDo1MzoxMSAt
MDAwMAkxLjU3CisrKyByb290Y29udGV4dC5jcwk4IEphbiAyMDAyIDAzOjE0
OjIxIC0wMDAwCkBAIC0yMzgsMTQgKzIzOCwxOSBAQAogCQkJLy8gRm9yIHRo
ZSBjYXNlIHRoZSB0eXBlIHdlIGFyZSBsb29raW5nIGZvciBpcyBuZXN0ZWQg
d2l0aGluIHRoaXMgb25lCiAJCQkvLyBvciBhbnkgYmFzZSBjbGFzcwogCQkJ
Ly8KLQkJCVR5cGUgY3VycmVudF90eXBlID0gZHMuVHlwZUJ1aWxkZXI7CisJ
CQlEZWNsU3BhY2UgY29udGFpbmluZ19kcyA9IGRzOworCQkJd2hpbGUgKGNv
bnRhaW5pbmdfZHMgIT0gbnVsbCl7CisJCQkJVHlwZSBjdXJyZW50X3R5cGUg
PSBjb250YWluaW5nX2RzLlR5cGVCdWlsZGVyOwogCi0JCQl3aGlsZSAoY3Vy
cmVudF90eXBlICE9IG51bGwpIHsKLQkJCQl0ID0gVHlwZU1hbmFnZXIuTG9v
a3VwVHlwZSAoY3VycmVudF90eXBlLkZ1bGxOYW1lICsgIisiICsgbmFtZSk7
Ci0JCQkJaWYgKHQgIT0gbnVsbCkKLQkJCQkJcmV0dXJuIHQ7Ci0JCQkJY3Vy
cmVudF90eXBlID0gY3VycmVudF90eXBlLkJhc2VUeXBlOwotCQkJfSAKKwkJ
CQl3aGlsZSAoY3VycmVudF90eXBlICE9IG51bGwpIHsKKwkJCQkJdCA9IFR5
cGVNYW5hZ2VyLkxvb2t1cFR5cGUgKGN1cnJlbnRfdHlwZS5GdWxsTmFtZSAr
ICIrIiArIG5hbWUpOworCQkJCQlpZiAodCAhPSBudWxsKQorCQkJCQkJcmV0
dXJuIHQ7CisJCQkJCWN1cnJlbnRfdHlwZSA9IGN1cnJlbnRfdHlwZS5CYXNl
VHlwZTsKKwkJCQl9CisKKwkJCQljb250YWluaW5nX2RzID0gY29udGFpbmlu
Z19kcy5QYXJlbnQ7CisJCQl9CiAKIAkJCXQgPSBUeXBlTWFuYWdlci5Mb29r
dXBUeXBlIChNYWtlRlFOIChkcy5OYW1lc3BhY2UuTmFtZSwgbmFtZSkpOwog
CQkJaWYgKHQgIT0gbnVsbCkK

------------=_1010460084-21945-0--