> -- Пётр Кушнир писал(а):
> ... доказательство предположения о неполноте процедуры LookupPath...Некоторые соображения на тему.

1) Lookup работает только с записями конкретного типа, как и Deref (по документации). И если "|ptrTyp, anyPtrTyp:  i.Deref(i);" у Вас вопреки документации отработает (где нестыковка --- не ясно), то Lookup не пройдёт.
> -- Meta Docu писал(а):
> PROCEDURE (VAR ptr: Item)  (VAR ref: Item)NEWDereference pointer ptr and assign the result to ref.Preptr.typ = ptrTyp	21...PROCEDURE (VAR in: Item)  (IN name: ARRAY OF CHAR; VAR i: Item)NEWLookup an item in a module or a field in a record.Prein.Valid()	20in.obj = modObj  OR  in.typ = recTyp	21## Код:
```
PROCEDURE (VAR ptr: Item) Deref* (VAR ref: Item), NEW;
   BEGIN
      IF ptr.ext # NIL THEN ptr.ext.Deref(ref); RETURN END;
      ASSERT(ptr.ptr # NIL, 20);
      ASSERT(ptr.typ IN {sysPtrTyp, anyPtrTyp, ptrTyp}, 21);
...

   PROCEDURE (VAR in: Item) Lookup* (IN name: ARRAY OF CHAR; VAR i: Item), NEW;
...
   BEGIN
      IF in.ext # NIL THEN in.ext.Lookup(name, i); RETURN END;
      ASSERT(in.ptr # NIL, 20);
      IF LegalName(name) THEN
         IF in.obj = modObj THEN
            ...
         ELSIF in.typ = recTyp THEN
            ...
         ELSE HALT(21)
```


2) С другой стороны:> -- Meta Docu писал(а):
> PROCEDURE  (IN path: ARRAY OF CHAR; OUT i: Item)Lookup an item via a whole designator, starting with a module name.> -- Appendix B: Syntax of Component Pascal писал(а):
> Designator 	=	Qualident {"." ident | "[" ExprList "]" | " ^ " | "(" Qualident ")" | "(" [ExprList] ")"} [ "$" ].Если хотите поддержать ANYREC, придётся по-идее поддержать и приведение типа. Есть в мета средства для приведения типа (сам не увидел)?