private static final Pattern PATH_ABS = Pattern.compile("/[^/].*");
@RegEx
private static final String YANG_XPATH_FUNCTIONS_STRING =
- "(re-match|deref|derived-from(-or-self)?|enum-value|bit-is-set)(\\()";
+ "(re-match|deref|derived-from(-or-self)?|enum-value|bit-is-set)([ \t\r\n]*)(\\()";
private static final Pattern YANG_XPATH_FUNCTIONS_PATTERN = Pattern.compile(YANG_XPATH_FUNCTIONS_STRING);
private static final Pattern ESCAPED_DQUOT = Pattern.compile("\\\"", Pattern.LITERAL);
private static final Pattern ESCAPED_BACKSLASH = Pattern.compile("\\\\", Pattern.LITERAL);
--- /dev/null
+/*
+ * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import org.junit.Test;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
+import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
+import org.opendaylight.yangtools.yang.stmt.StmtTestUtils;
+
+public class YT826Test {
+
+ @Test
+ public void testWhenExpressionWhitespace() throws ReactorException, URISyntaxException, IOException,
+ YangSyntaxErrorException {
+ final SchemaContext schemaContext = StmtTestUtils.parseYangSource("/bugs/yangtools826/example.yang");
+ assertNotNull(schemaContext);
+ }
+
+}
--- /dev/null
+module example {
+ yang-version 1.1;
+
+ namespace "http://www.example.com";
+
+ prefix "ex";
+
+ revision "2017-10-11";
+
+ identity interface-type;
+
+ identity ethernet {
+ base interface-type;
+ }
+
+ list interface {
+ key name;
+
+ leaf name {
+ type string;
+ }
+
+ leaf type {
+ type identityref {
+ base interface-type;
+ }
+ }
+ }
+
+ augment "/interface" {
+ when 'derived-from-or-self (type, "ex:ethernet")';
+
+ container extension {
+ leaf speed {
+ type int32;
+ }
+ }
+ }
+}