Method reference in RefOf, DeRefOf, ObjectType are NOT method

invocations, they are simple references.


date	2005.03.09.18.46.00;	author rmoore1;	state Exp;
This commit is contained in:
aystarik 2005-06-29 16:02:31 +00:00
parent 7105a25140
commit d2dbe38e1c

View File

@ -1,7 +1,7 @@
/****************************************************************************** /******************************************************************************
* *
* Module Name: asllookup- Namespace lookup * Module Name: asllookup- Namespace lookup
* $Revision: 1.87 $ * $Revision: 1.88 $
* *
*****************************************************************************/ *****************************************************************************/
@ -858,15 +858,29 @@ LkNamespaceLocateBegin (
(Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) (Op->Asl.ParseOpcode == PARSEOP_METHODCALL))
{ {
/*
* A reference to a method within one of these opcodes is not an
* invocation of the method, it is simply a reference to the method.
*/
if ((Op->Asl.Parent) &&
((Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_REFOF) ||
(Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_DEREFOF) ||
(Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_OBJECTTYPE)))
{
return (AE_OK);
}
/* /*
* There are two types of method invocation: * There are two types of method invocation:
* 1) Invocation with arguments -- the parser recognizes this as a METHODCALL * 1) Invocation with arguments -- the parser recognizes this
* 2) Invocation with no arguments --the parser cannot determine that this is a method * as a METHODCALL.
* invocation, therefore we have to figure it out here. * 2) Invocation with no arguments --the parser cannot determine that
* this is a method invocation, therefore we have to figure it out
* here.
*/ */
if (Node->Type != ACPI_TYPE_METHOD) if (Node->Type != ACPI_TYPE_METHOD)
{ {
sprintf (MsgBuffer, "%s is a %s", Op->Asl.ExternalName, AcpiUtGetTypeName (Node->Type)); sprintf (MsgBuffer, "%s is a %s",
Op->Asl.ExternalName, AcpiUtGetTypeName (Node->Type));
AslError (ASL_ERROR, ASL_MSG_NOT_METHOD, Op, MsgBuffer); AslError (ASL_ERROR, ASL_MSG_NOT_METHOD, Op, MsgBuffer);
return (AE_OK); return (AE_OK);