/** * Copyright (c) 2012-2016 André Bargull * Alle Rechte vorbehalten / All Rights Reserved. Use is subject to license terms. * * <https://github.com/anba/es6draft> */ package com.github.anba.es6draft.ast; import java.util.List; import com.github.anba.es6draft.ast.scope.BlockScope; /** * <h1>14 ECMAScript Language: Functions and Classes</h1> * <ul> * <li>14.5 Class Definitions * </ul> */ public interface ClassDefinition extends ScopedNode { /** * Returns the scope object for this node. May return {@code null} if this class definition does * not create an implicit scope. * * @return the scope object or {@code null} */ @Override BlockScope getScope(); /** * Returns the list of class decorators. * * @return the list of decorators */ List<Expression> getDecorators(); /** * Returns the class name * * @return the class name */ String getClassName(); /** * Returns the class name or {@code null} if not present. * * @return the class name or {@code null} */ BindingIdentifier getIdentifier(); /** * Returns the class heritage expression or {@code null} if not present. * * @return the class heritage expression or {@code null} */ Expression getHeritage(); /** * Returns the list of class methods in source order. * * @return the list of class methods */ List<MethodDefinition> getMethods(); /** * Returns the constructor method. * * @return the constructor method */ MethodDefinition getConstructor(); /** * Returns the call constructor method. * * @return the call constructor method */ MethodDefinition getCallConstructor(); /** * Returns the list of class properties. * * @return the list of class properties */ List<PropertyDefinition> getProperties(); /** * Sets the list of class properties. * * @param properties * the new list of class properties */ void setProperties(List<PropertyDefinition> properties); }