001/*-------------------------------------------------------------------------+ 002| | 003| Copyright (c) 2009-2019 CQSE GmbH | 004| | 005+-------------------------------------------------------------------------*/ 006package eu.cqse.check.framework.shallowparser.languages.javascript; 007 008import static eu.cqse.check.framework.scanner.ETokenType.IDENTIFIER; 009import static eu.cqse.check.framework.scanner.ETokenType.LPAREN; 010import static eu.cqse.check.framework.scanner.ETokenType.LT; 011 012import java.util.List; 013 014import eu.cqse.check.framework.scanner.IToken; 015import eu.cqse.check.framework.shallowparser.TokenStreamUtils; 016import eu.cqse.check.framework.shallowparser.framework.ParserState; 017import eu.cqse.check.framework.shallowparser.framework.RecognizerBase; 018import eu.cqse.check.framework.shallowparser.languages.javascript.JavaScriptShallowParser.EJavaScriptParserStates; 019 020/** 021 * This recognizer matches method definitions whose names are user-defined. In 022 * Typescript, method names may include get, set, import, etc 023 */ 024public class MethodNameIsUserDefinedRecognizer extends RecognizerBase<EJavaScriptParserStates> { 025 026 /** {@inheritDoc} */ 027 @Override 028 protected int matchesLocally(ParserState<EJavaScriptParserStates> parserState, List<IToken> tokens, 029 int startOffset) { 030 int index = TokenStreamUtils.firstTokenOfTypeSequence(tokens, startOffset, IDENTIFIER, LT); 031 if (index == NO_MATCH) { 032 return TokenStreamUtils.firstTokenOfTypeSequence(tokens, startOffset, IDENTIFIER, LPAREN); 033 } 034 035 return NO_MATCH; 036 } 037 038}