public void VisitSuperExpr(SuperExpr expr)
 {
     if (currentClass == ClassType.None)
     {
         Lox.Error(expr.Keyword, "Cannot use 'super' outside of class.");
     }
     else if (currentClass == ClassType.Class)
     {
         Lox.Error(expr.Keyword, "Cannot use 'super' in a class with no superclass.");
     }
     ResolveLocal(expr, expr.Keyword);
 }
        public object VisitSuperExpr(SuperExpr expr)
        {
            int distance   = locals[expr];
            var superClass = (LoxClass)environment.GetAt(distance, "super");
            var obj        = (LoxInstance)environment.GetAt(distance - 1, "this");

            var method = superClass.FindMethod(obj, expr.Method.Lexeme);

            if (method == null)
            {
                throw new RuntimeError(expr.Method, "Undefined property '" + expr.Method.Lexeme + "'.");
            }

            return(method);
        }
 public string VisitSuperExpr(SuperExpr expr)
 {
     throw new System.NotImplementedException();
 }