cuelang.org/go@v0.10.1/cue/format/testdata/expressions.txtar (about)

     1  
     2  -- expressions.input --
     3  package expressions
     4  
     5  import "list"
     6  
     7  {
     8      a: 1 // comment
     9      aaa: 22 // comment
    10  
    11      "": 3
    12  
    13      b: 3
    14  
    15      c: b: a:  4
    16      c?: bb?: aaa?: 5
    17      c: b: [Name=string]: a: int
    18      let alias = 3.14
    19      "g\("en")"?: 4
    20  
    21      let alias2 = foo // with comment
    22      let aaalias = foo
    23      b: bar
    24  
    25      bottom: _|_
    26  
    27      a:
    28      b:
    29      c: 2
    30  
    31      req!: int
    32  
    33      a: bbbb: c: 3
    34      a: b: 3
    35      a: bb: cc: 3
    36  
    37      empty: {}
    38      emptyNewLine: {
    39  
    40      }
    41      someObject: {
    42          a: 8
    43          aa: 9
    44          aaa: 10
    45      }
    46  
    47      #someDefinition: {
    48          embedding
    49  
    50          field: 2
    51      }
    52  
    53      #openDef: {
    54          a: int
    55          ...
    56      }
    57  
    58      attrs: {
    59          a: 8 @go(A) // comment
    60          aa: 8 @go(A) // comment
    61          bb: 9
    62          bbb: 10 @go(Bbb) @xml(,attr) // comment
    63          bbbb: 100 @go(Bbbb) @xml(,attr) // comment
    64      }
    65  
    66      foo: bar: string @go(-)
    67  
    68      e: 1+2*3
    69      e: 1*2*3 // error
    70      e: >=2 & <=3
    71      e: >2 & <=(3 + 4)
    72      ex: >2 & <=(3 + 4*5)
    73      e: >2 & <=3 & <=4
    74      e: 1 + 2 + 3 // error
    75  
    76      e: s[1+2]
    77      e: s[1:2]
    78      e: s[1+2:2+4]
    79      e: s[2]
    80      e: s[2*3]
    81      e: s[1+2*3]
    82  
    83      e: a |
    84      b|
    85      c
    86  
    87      e:
    88      a|
    89      b| c |
    90      d
    91  
    92      e: f(3+4+5)
    93      e: f(3*4*5)
    94      e: f(3+4*5)
    95  
    96      e: f(3 + 4 div 5)
    97  
    98      e: 3<4&&5>4
    99      e: a || b && c || d
   100  
   101      e: a + +b * 3
   102      e: -a - -b
   103  
   104      e: b + c
   105      e: b*c + d
   106      e: a*b + c
   107      e: a - b - c
   108      e: a - (b - c)
   109      e: a - b*c
   110      e: a - (b * c)
   111      e: a * b / c
   112      e: a div b + 5
   113      e: a / b
   114      e: x[a|b]
   115      e: x[a /b]
   116      e: a & b
   117      e: a + +b
   118      e: a - -b
   119      e: a div - b
   120      e: x[a*-b]
   121      e: x[a + +b]
   122      e: len(longVariableName) * 2
   123  
   124      e: "\(a)"
   125      e: 'aa \(aaa) aa'
   126      e: "aa \(aaa)"
   127  
   128      e: [
   129      ]
   130      e: [
   131  
   132      ]
   133      e: [1, 2
   134      ]
   135      e: [1, 2]
   136         e: [1, 2, 3, 4,
   137      5, 6, 7, 8]
   138      e: [1, 2, 3, 4,
   139      5, 6, 7, 8 // maybe force additional comma
   140      ]
   141      e: [...]
   142      e: [
   143          ...]
   144      e: [...
   145      ]
   146      e: [1, 2, ...]
   147      e: [1, 2,
   148      ...]
   149      e: [...int]
   150      e: [...int,]
   151      e: [...int | float]
   152      e: [for x in someObject if x > 9 {
   153          x
   154      }]
   155      e: [for x in someObject if x > 9 {x}]
   156      e: [
   157      for x in someObject
   158      if x > 9 {x}]
   159     e: [
   160      for x in someObject
   161      if x > 9
   162      {x}]
   163  
   164      e: [
   165          if x > 1 {},
   166          if x > 1 {},
   167          for x in src {},
   168      ]
   169  
   170      for k, v in someObject {
   171          "\(k)": v
   172      }
   173      for k, v in someObject {
   174          "\(k)": v
   175      }
   176  
   177      e: {
   178          for k, v in someObject
   179          if k > "a" {
   180              "\(k)":v
   181          }
   182      }
   183  
   184      e: { for k, v in someObject if k > "a" {"\(k)":v} }
   185      e: { for k, v in someObject if k > "a" {
   186          "\(k)":v }}
   187  
   188      e: {
   189      for k, v in someObject
   190      let x = v
   191      if k > "a" {
   192          "\(k)":x}}
   193  
   194      if a |
   195      b {
   196          c: d
   197      }
   198  
   199      e: [{
   200          a: 1, b: 2,
   201      }]
   202  
   203      e: [{
   204          a: 1, b: 2,
   205      },
   206      ]
   207  
   208     e: [{
   209          a: 1, b: 2,
   210      }, {
   211          c: 1, d: 2,
   212      }]
   213  
   214      e: [{
   215          a: 1, b: 2,
   216      },
   217          3,
   218          4,
   219      ]
   220  
   221      e: e.f(1, 2)
   222  
   223      e: ((3 + 4))
   224  
   225      // field before list
   226      f: 3
   227      a: [1, 2 // add comma
   228      ]
   229  
   230      foo : bar
   231  
   232      a: "foo-bar": 3
   233      b: a."foo-bar"
   234      c: a. "foo-bar" . b
   235      d: a.
   236          "foo-bar"
   237      e: a.
   238          "foo-bar".
   239                  b
   240      f: 2
   241  
   242      "contains		tabs": 123
   243      @jsonschema(foo="contains		tabs")
   244  
   245      j: cueckoo: _ | [
   246          1,
   247  
   248          2,
   249      ]
   250      k: cueckoo: *[
   251          1,
   252  
   253          2,
   254      ]
   255      l: cueckoo: list.Concat([
   256          1,
   257  
   258          2,
   259      ])
   260  
   261      m: [1, 2, 3]
   262      m: [1, 2, 3,]
   263      m: [ 1, 2, 3, ]
   264      m: [    1, 2, 3,]
   265      m: [     1, 2, 3,]
   266      m: [ 1, 2, 3]
   267      m: [ 1, 2, 3,]
   268      m: [ 1, 2, 3, ]
   269      m: [ 1, 2, 3 ]
   270      m: [ if true { 1 }, 2, 3]
   271      n: [ 1]
   272      o: [{}]
   273      o: [ {}]
   274      o: [{} ]
   275      o: [ {} ]
   276  
   277      p: 1
   278      p: p & {p: 2}
   279      q: 1
   280      q: q | {q: 2}
   281      r: 1
   282      r: b & [1, 2, {a: 4}]
   283      s: [string]: [string]: a
   284      s: [string]: {s: string}
   285  }
   286  -- expressions.golden --
   287  package expressions
   288  
   289  import "list"
   290  
   291  {
   292  	a:   1  // comment
   293  	aaa: 22 // comment
   294  
   295  	"": 3
   296  
   297  	b: 3
   298  
   299  	c: b: a:       4
   300  	c?: bb?: aaa?: 5
   301  	c: b: [Name=string]: a: int
   302  	let alias = 3.14
   303  	"g\("en")"?: 4
   304  
   305  	let alias2 = foo // with comment
   306  	let aaalias = foo
   307  	b: bar
   308  
   309  	bottom: _|_
   310  
   311  	a:
   312  		b:
   313  			c: 2
   314  
   315  	req!: int
   316  
   317  	a: bbbb: c: 3
   318  	a: b: 3
   319  	a: bb: cc: 3
   320  
   321  	empty: {}
   322  	emptyNewLine: {}
   323  	someObject: {
   324  		a:   8
   325  		aa:  9
   326  		aaa: 10
   327  	}
   328  
   329  	#someDefinition: {
   330  		embedding
   331  
   332  		field: 2
   333  	}
   334  
   335  	#openDef: {
   336  		a: int
   337  		...
   338  	}
   339  
   340  	attrs: {
   341  		a:    8 @go(A) // comment
   342  		aa:   8 @go(A) // comment
   343  		bb:   9
   344  		bbb:  10  @go(Bbb) @xml(,attr)  // comment
   345  		bbbb: 100 @go(Bbbb) @xml(,attr) // comment
   346  	}
   347  
   348  	foo: {
   349  		bar: string @go(-)
   350  	}
   351  
   352  	e:  1 + 2*3
   353  	e:  1 * 2 * 3 // error
   354  	e:  >=2 & <=3
   355  	e:  >2 & <=(3 + 4)
   356  	ex: >2 & <=(3 + 4*5)
   357  	e:  >2 & <=3 & <=4
   358  	e:  1 + 2 + 3 // error
   359  
   360  	e: s[1+2]
   361  	e: s[1:2]
   362  	e: s[1+2 : 2+4]
   363  	e: s[2]
   364  	e: s[2*3]
   365  	e: s[1+2*3]
   366  
   367  	e: a |
   368  		b |
   369  		c
   370  
   371  	e:
   372  		a |
   373  		b | c |
   374  		d
   375  
   376  	e: f(3 + 4 + 5)
   377  	e: f(3 * 4 * 5)
   378  	e: f(3 + 4*5)
   379  
   380  	e: f(3 + 4 div 5)
   381  
   382  	e: 3 < 4 && 5 > 4
   383  	e: a || b && c || d
   384  
   385  	e: a + +b*3
   386  	e: -a - -b
   387  
   388  	e: b + c
   389  	e: b*c + d
   390  	e: a*b + c
   391  	e: a - b - c
   392  	e: a - (b - c)
   393  	e: a - b*c
   394  	e: a - (b * c)
   395  	e: a * b / c
   396  	e: a div b + 5
   397  	e: a / b
   398  	e: x[a | b]
   399  	e: x[a/b]
   400  	e: a & b
   401  	e: a + +b
   402  	e: a - -b
   403  	e: a div -b
   404  	e: x[a*-b]
   405  	e: x[a + +b]
   406  	e: len(longVariableName) * 2
   407  
   408  	e: "\(a)"
   409  	e: 'aa \(aaa) aa'
   410  	e: "aa \(aaa)"
   411  
   412  	e: []
   413  	e: []
   414  	e: [1, 2,
   415  	]
   416  	e: [1, 2]
   417  	e: [1, 2, 3, 4,
   418  		5, 6, 7, 8]
   419  	e: [1, 2, 3, 4,
   420  		5, 6, 7, 8, // maybe force additional comma
   421  	]
   422  	e: [...]
   423  	e: [
   424  		...]
   425  	e: [...,
   426  	]
   427  	e: [1, 2, ...]
   428  	e: [1, 2,
   429  		...]
   430  	e: [...int]
   431  	e: [...int]
   432  	e: [...int | float]
   433  	e: [for x in someObject if x > 9 {
   434  		x
   435  	}]
   436  	e: [for x in someObject if x > 9 {x}]
   437  	e: [
   438  		for x in someObject
   439  		if x > 9 {x}]
   440  	e: [
   441  		for x in someObject
   442  		if x > 9 {x}]
   443  
   444  	e: [
   445  		if x > 1 {},
   446  		if x > 1 {},
   447  		for x in src {},
   448  	]
   449  
   450  	for k, v in someObject {
   451  		"\(k)": v
   452  	}
   453  	for k, v in someObject {
   454  		"\(k)": v
   455  	}
   456  
   457  	e: {
   458  		for k, v in someObject
   459  		if k > "a" {
   460  			"\(k)": v
   461  		}
   462  	}
   463  
   464  	e: {for k, v in someObject if k > "a" {"\(k)": v}}
   465  	e: {for k, v in someObject if k > "a" {
   466  		"\(k)": v
   467  	}}
   468  
   469  	e: {
   470  		for k, v in someObject
   471  		let x = v
   472  		if k > "a" {
   473  			"\(k)": x
   474  		}}
   475  
   476  	if a |
   477  		b {
   478  		c: d
   479  	}
   480  
   481  	e: [{
   482  		a: 1, b: 2
   483  	}]
   484  
   485  	e: [{
   486  		a: 1, b: 2
   487  	},
   488  	]
   489  
   490  	e: [{
   491  		a: 1, b: 2
   492  	}, {
   493  		c: 1, d: 2
   494  	}]
   495  
   496  	e: [{
   497  		a: 1, b: 2
   498  	},
   499  		3,
   500  		4,
   501  	]
   502  
   503  	e: e.f(1, 2)
   504  
   505  	e: (3 + 4)
   506  
   507  	// field before list
   508  	f: 3
   509  	a: [1, 2, // add comma
   510  	]
   511  
   512  	foo: bar
   513  
   514  	a: "foo-bar": 3
   515  	b: a."foo-bar"
   516  	c: a."foo-bar".b
   517  	d: a.
   518  		"foo-bar"
   519  	e: a.
   520  		"foo-bar".
   521  		b
   522  	f: 2
   523  
   524  	"contains		tabs": 123
   525  	@jsonschema(foo="contains		tabs")
   526  
   527  	j: cueckoo: _ | [
   528  		1,
   529  
   530  		2,
   531  	]
   532  	k: cueckoo: *[
   533  		1,
   534  
   535  		2,
   536  	]
   537  	l: cueckoo: list.Concat([
   538  		1,
   539  
   540  		2,
   541  	])
   542  
   543  	m: [1, 2, 3]
   544  	m: [1, 2, 3]
   545  	m: [1, 2, 3]
   546  	m: [1, 2, 3]
   547  	m: [1, 2, 3]
   548  	m: [1, 2, 3]
   549  	m: [1, 2, 3]
   550  	m: [1, 2, 3]
   551  	m: [1, 2, 3]
   552  	m: [if true {1}, 2, 3]
   553  	n: [1]
   554  	o: [{}]
   555  	o: [{}]
   556  	o: [{}]
   557  	o: [{}]
   558  
   559  	p: 1
   560  	p: p & {p: 2}
   561  	q: 1
   562  	q: q | {q: 2}
   563  	r: 1
   564  	r: b & [1, 2, {a: 4}]
   565  	s: [string]: [string]: a
   566  	s: [string]: {s: string}
   567  }
   568  -- issue2496.input --
   569  machine_type: [
   570  	if arch == "amd" {"n2-standard-2"},
   571  	if arch == "arm" {"t2a-standard-2"},
   572  	"unknown arch",
   573  ][0]
   574  
   575  long_field_name: ([
   576  	"foo"
   577  ])
   578  
   579  long_field_name: [
   580  	"foo"
   581  ].bar
   582  
   583  // TODO(mvdan): we insert an empty line between the definitions.
   584  _foo: {
   585  	#tool: string
   586  	#arch: string
   587  
   588  	// skip_create_image: true
   589  }
   590  -- issue2496.golden --
   591  machine_type: [
   592  	if arch == "amd" {"n2-standard-2"},
   593  	if arch == "arm" {"t2a-standard-2"},
   594  	"unknown arch",
   595  ][0]
   596  
   597  long_field_name: ([
   598  	"foo",
   599  ])
   600  
   601  long_field_name: [
   602  	"foo",
   603  ].bar
   604  
   605  // TODO(mvdan): we insert an empty line between the definitions.
   606  _foo: {
   607  	#tool: string
   608  
   609  	#arch: string
   610  
   611  	// skip_create_image: true
   612  }