Ok, let's simplify the sitaution.
Help says
cExpression
Specifies the expression to be evaluated, which can be a variable, field, memo field, or any other expression.
The expression must be passed as a character string; place quotation marks around the names of memory variables, fields, and so on. If you do not place quotation marks around the expression, the TYPE( ) function evaluates the contents of the string. If the contents cannot be evaluated as a valid FoxPro expression, TYPE() returns "U" (undefined expression).
When I Say ?TyPe(Test(123)) VFP expcets that Test is an array and is looking for the 123rd element of the array hence we get an error.