1*1fa6dee9SAndroid Build Coastguard Worker// Copyright 2014 Google Inc. All rights reserved. 2*1fa6dee9SAndroid Build Coastguard Worker// 3*1fa6dee9SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*1fa6dee9SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*1fa6dee9SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*1fa6dee9SAndroid Build Coastguard Worker// 7*1fa6dee9SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*1fa6dee9SAndroid Build Coastguard Worker// 9*1fa6dee9SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*1fa6dee9SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*1fa6dee9SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*1fa6dee9SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*1fa6dee9SAndroid Build Coastguard Worker// limitations under the License. 14*1fa6dee9SAndroid Build Coastguard Worker 15*1fa6dee9SAndroid Build Coastguard Workerpackage parser 16*1fa6dee9SAndroid Build Coastguard Worker 17*1fa6dee9SAndroid Build Coastguard Workerimport ( 18*1fa6dee9SAndroid Build Coastguard Worker "bytes" 19*1fa6dee9SAndroid Build Coastguard Worker "testing" 20*1fa6dee9SAndroid Build Coastguard Worker) 21*1fa6dee9SAndroid Build Coastguard Worker 22*1fa6dee9SAndroid Build Coastguard Workervar validPrinterTestCases = []struct { 23*1fa6dee9SAndroid Build Coastguard Worker name string 24*1fa6dee9SAndroid Build Coastguard Worker input string 25*1fa6dee9SAndroid Build Coastguard Worker output string 26*1fa6dee9SAndroid Build Coastguard Worker}{ 27*1fa6dee9SAndroid Build Coastguard Worker { 28*1fa6dee9SAndroid Build Coastguard Worker input: ` 29*1fa6dee9SAndroid Build Coastguard Workerfoo {} 30*1fa6dee9SAndroid Build Coastguard Worker`, 31*1fa6dee9SAndroid Build Coastguard Worker output: ` 32*1fa6dee9SAndroid Build Coastguard Workerfoo {} 33*1fa6dee9SAndroid Build Coastguard Worker`, 34*1fa6dee9SAndroid Build Coastguard Worker }, 35*1fa6dee9SAndroid Build Coastguard Worker { 36*1fa6dee9SAndroid Build Coastguard Worker input: ` 37*1fa6dee9SAndroid Build Coastguard Workerfoo(name= "abc",num= 4,) 38*1fa6dee9SAndroid Build Coastguard Worker`, 39*1fa6dee9SAndroid Build Coastguard Worker output: ` 40*1fa6dee9SAndroid Build Coastguard Workerfoo { 41*1fa6dee9SAndroid Build Coastguard Worker name: "abc", 42*1fa6dee9SAndroid Build Coastguard Worker num: 4, 43*1fa6dee9SAndroid Build Coastguard Worker} 44*1fa6dee9SAndroid Build Coastguard Worker`, 45*1fa6dee9SAndroid Build Coastguard Worker }, 46*1fa6dee9SAndroid Build Coastguard Worker { 47*1fa6dee9SAndroid Build Coastguard Worker input: ` 48*1fa6dee9SAndroid Build Coastguard Worker foo { 49*1fa6dee9SAndroid Build Coastguard Worker stuff: ["asdf", "jkl;", "qwert", 50*1fa6dee9SAndroid Build Coastguard Worker "uiop", "bnm,"] 51*1fa6dee9SAndroid Build Coastguard Worker } 52*1fa6dee9SAndroid Build Coastguard Worker `, 53*1fa6dee9SAndroid Build Coastguard Worker output: ` 54*1fa6dee9SAndroid Build Coastguard Workerfoo { 55*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 56*1fa6dee9SAndroid Build Coastguard Worker "asdf", 57*1fa6dee9SAndroid Build Coastguard Worker "bnm,", 58*1fa6dee9SAndroid Build Coastguard Worker "jkl;", 59*1fa6dee9SAndroid Build Coastguard Worker "qwert", 60*1fa6dee9SAndroid Build Coastguard Worker "uiop", 61*1fa6dee9SAndroid Build Coastguard Worker ], 62*1fa6dee9SAndroid Build Coastguard Worker} 63*1fa6dee9SAndroid Build Coastguard Worker`, 64*1fa6dee9SAndroid Build Coastguard Worker }, 65*1fa6dee9SAndroid Build Coastguard Worker { 66*1fa6dee9SAndroid Build Coastguard Worker input: ` 67*1fa6dee9SAndroid Build Coastguard Worker var = "asdf" 68*1fa6dee9SAndroid Build Coastguard Worker foo { 69*1fa6dee9SAndroid Build Coastguard Worker stuff: ["asdf"] + var, 70*1fa6dee9SAndroid Build Coastguard Worker }`, 71*1fa6dee9SAndroid Build Coastguard Worker output: ` 72*1fa6dee9SAndroid Build Coastguard Workervar = "asdf" 73*1fa6dee9SAndroid Build Coastguard Workerfoo { 74*1fa6dee9SAndroid Build Coastguard Worker stuff: ["asdf"] + var, 75*1fa6dee9SAndroid Build Coastguard Worker} 76*1fa6dee9SAndroid Build Coastguard Worker`, 77*1fa6dee9SAndroid Build Coastguard Worker }, 78*1fa6dee9SAndroid Build Coastguard Worker { 79*1fa6dee9SAndroid Build Coastguard Worker input: ` 80*1fa6dee9SAndroid Build Coastguard Worker var = "asdf" 81*1fa6dee9SAndroid Build Coastguard Worker foo { 82*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 83*1fa6dee9SAndroid Build Coastguard Worker "asdf" 84*1fa6dee9SAndroid Build Coastguard Worker ] + var, 85*1fa6dee9SAndroid Build Coastguard Worker }`, 86*1fa6dee9SAndroid Build Coastguard Worker output: ` 87*1fa6dee9SAndroid Build Coastguard Workervar = "asdf" 88*1fa6dee9SAndroid Build Coastguard Workerfoo { 89*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 90*1fa6dee9SAndroid Build Coastguard Worker "asdf", 91*1fa6dee9SAndroid Build Coastguard Worker ] + var, 92*1fa6dee9SAndroid Build Coastguard Worker} 93*1fa6dee9SAndroid Build Coastguard Worker`, 94*1fa6dee9SAndroid Build Coastguard Worker }, 95*1fa6dee9SAndroid Build Coastguard Worker { 96*1fa6dee9SAndroid Build Coastguard Worker input: ` 97*1fa6dee9SAndroid Build Coastguard Worker var = "asdf" 98*1fa6dee9SAndroid Build Coastguard Worker foo { 99*1fa6dee9SAndroid Build Coastguard Worker stuff: ["asdf"] + var + ["qwert"], 100*1fa6dee9SAndroid Build Coastguard Worker }`, 101*1fa6dee9SAndroid Build Coastguard Worker output: ` 102*1fa6dee9SAndroid Build Coastguard Workervar = "asdf" 103*1fa6dee9SAndroid Build Coastguard Workerfoo { 104*1fa6dee9SAndroid Build Coastguard Worker stuff: ["asdf"] + var + ["qwert"], 105*1fa6dee9SAndroid Build Coastguard Worker} 106*1fa6dee9SAndroid Build Coastguard Worker`, 107*1fa6dee9SAndroid Build Coastguard Worker }, 108*1fa6dee9SAndroid Build Coastguard Worker { 109*1fa6dee9SAndroid Build Coastguard Worker input: ` 110*1fa6dee9SAndroid Build Coastguard Worker foo { 111*1fa6dee9SAndroid Build Coastguard Worker stuff: { 112*1fa6dee9SAndroid Build Coastguard Worker isGood: true, 113*1fa6dee9SAndroid Build Coastguard Worker name: "bar", 114*1fa6dee9SAndroid Build Coastguard Worker num: 4, 115*1fa6dee9SAndroid Build Coastguard Worker } 116*1fa6dee9SAndroid Build Coastguard Worker } 117*1fa6dee9SAndroid Build Coastguard Worker `, 118*1fa6dee9SAndroid Build Coastguard Worker output: ` 119*1fa6dee9SAndroid Build Coastguard Workerfoo { 120*1fa6dee9SAndroid Build Coastguard Worker stuff: { 121*1fa6dee9SAndroid Build Coastguard Worker isGood: true, 122*1fa6dee9SAndroid Build Coastguard Worker name: "bar", 123*1fa6dee9SAndroid Build Coastguard Worker num: 4, 124*1fa6dee9SAndroid Build Coastguard Worker }, 125*1fa6dee9SAndroid Build Coastguard Worker} 126*1fa6dee9SAndroid Build Coastguard Worker`, 127*1fa6dee9SAndroid Build Coastguard Worker }, 128*1fa6dee9SAndroid Build Coastguard Worker { 129*1fa6dee9SAndroid Build Coastguard Worker input: ` 130*1fa6dee9SAndroid Build Coastguard Worker// comment1 131*1fa6dee9SAndroid Build Coastguard Workerfoo { 132*1fa6dee9SAndroid Build Coastguard Worker // comment2 133*1fa6dee9SAndroid Build Coastguard Worker isGood: true, // comment3 134*1fa6dee9SAndroid Build Coastguard Worker} 135*1fa6dee9SAndroid Build Coastguard Worker`, 136*1fa6dee9SAndroid Build Coastguard Worker output: ` 137*1fa6dee9SAndroid Build Coastguard Worker// comment1 138*1fa6dee9SAndroid Build Coastguard Workerfoo { 139*1fa6dee9SAndroid Build Coastguard Worker // comment2 140*1fa6dee9SAndroid Build Coastguard Worker isGood: true, // comment3 141*1fa6dee9SAndroid Build Coastguard Worker} 142*1fa6dee9SAndroid Build Coastguard Worker`, 143*1fa6dee9SAndroid Build Coastguard Worker }, 144*1fa6dee9SAndroid Build Coastguard Worker { 145*1fa6dee9SAndroid Build Coastguard Worker input: ` 146*1fa6dee9SAndroid Build Coastguard Workerfoo { 147*1fa6dee9SAndroid Build Coastguard Worker name: "abc", 148*1fa6dee9SAndroid Build Coastguard Worker num: 4, 149*1fa6dee9SAndroid Build Coastguard Worker} 150*1fa6dee9SAndroid Build Coastguard Worker 151*1fa6dee9SAndroid Build Coastguard Workerbar { 152*1fa6dee9SAndroid Build Coastguard Worker name: "def", 153*1fa6dee9SAndroid Build Coastguard Worker num: 5, 154*1fa6dee9SAndroid Build Coastguard Worker} 155*1fa6dee9SAndroid Build Coastguard Worker `, 156*1fa6dee9SAndroid Build Coastguard Worker output: ` 157*1fa6dee9SAndroid Build Coastguard Workerfoo { 158*1fa6dee9SAndroid Build Coastguard Worker name: "abc", 159*1fa6dee9SAndroid Build Coastguard Worker num: 4, 160*1fa6dee9SAndroid Build Coastguard Worker} 161*1fa6dee9SAndroid Build Coastguard Worker 162*1fa6dee9SAndroid Build Coastguard Workerbar { 163*1fa6dee9SAndroid Build Coastguard Worker name: "def", 164*1fa6dee9SAndroid Build Coastguard Worker num: 5, 165*1fa6dee9SAndroid Build Coastguard Worker} 166*1fa6dee9SAndroid Build Coastguard Worker`, 167*1fa6dee9SAndroid Build Coastguard Worker }, 168*1fa6dee9SAndroid Build Coastguard Worker { 169*1fa6dee9SAndroid Build Coastguard Worker input: ` 170*1fa6dee9SAndroid Build Coastguard Workerfoo { 171*1fa6dee9SAndroid Build Coastguard Worker bar: "b" + 172*1fa6dee9SAndroid Build Coastguard Worker "a" + 173*1fa6dee9SAndroid Build Coastguard Worker "z", 174*1fa6dee9SAndroid Build Coastguard Worker} 175*1fa6dee9SAndroid Build Coastguard Worker`, 176*1fa6dee9SAndroid Build Coastguard Worker output: ` 177*1fa6dee9SAndroid Build Coastguard Workerfoo { 178*1fa6dee9SAndroid Build Coastguard Worker bar: "b" + 179*1fa6dee9SAndroid Build Coastguard Worker "a" + 180*1fa6dee9SAndroid Build Coastguard Worker "z", 181*1fa6dee9SAndroid Build Coastguard Worker} 182*1fa6dee9SAndroid Build Coastguard Worker`, 183*1fa6dee9SAndroid Build Coastguard Worker }, 184*1fa6dee9SAndroid Build Coastguard Worker { 185*1fa6dee9SAndroid Build Coastguard Worker input: ` 186*1fa6dee9SAndroid Build Coastguard Workerfoo = "stuff" 187*1fa6dee9SAndroid Build Coastguard Workerbar = foo 188*1fa6dee9SAndroid Build Coastguard Workerbaz = foo + bar 189*1fa6dee9SAndroid Build Coastguard Workerbaz += foo 190*1fa6dee9SAndroid Build Coastguard Worker`, 191*1fa6dee9SAndroid Build Coastguard Worker output: ` 192*1fa6dee9SAndroid Build Coastguard Workerfoo = "stuff" 193*1fa6dee9SAndroid Build Coastguard Workerbar = foo 194*1fa6dee9SAndroid Build Coastguard Workerbaz = foo + bar 195*1fa6dee9SAndroid Build Coastguard Workerbaz += foo 196*1fa6dee9SAndroid Build Coastguard Worker`, 197*1fa6dee9SAndroid Build Coastguard Worker }, 198*1fa6dee9SAndroid Build Coastguard Worker { 199*1fa6dee9SAndroid Build Coastguard Worker input: ` 200*1fa6dee9SAndroid Build Coastguard Workerfoo = 100 201*1fa6dee9SAndroid Build Coastguard Workerbar = foo 202*1fa6dee9SAndroid Build Coastguard Workerbaz = foo + bar 203*1fa6dee9SAndroid Build Coastguard Workerbaz += foo 204*1fa6dee9SAndroid Build Coastguard Worker`, 205*1fa6dee9SAndroid Build Coastguard Worker output: ` 206*1fa6dee9SAndroid Build Coastguard Workerfoo = 100 207*1fa6dee9SAndroid Build Coastguard Workerbar = foo 208*1fa6dee9SAndroid Build Coastguard Workerbaz = foo + bar 209*1fa6dee9SAndroid Build Coastguard Workerbaz += foo 210*1fa6dee9SAndroid Build Coastguard Worker`, 211*1fa6dee9SAndroid Build Coastguard Worker }, 212*1fa6dee9SAndroid Build Coastguard Worker { 213*1fa6dee9SAndroid Build Coastguard Worker input: ` 214*1fa6dee9SAndroid Build Coastguard Workerfoo = "bar " + 215*1fa6dee9SAndroid Build Coastguard Worker "" + 216*1fa6dee9SAndroid Build Coastguard Worker "baz" 217*1fa6dee9SAndroid Build Coastguard Worker`, 218*1fa6dee9SAndroid Build Coastguard Worker output: ` 219*1fa6dee9SAndroid Build Coastguard Workerfoo = "bar " + 220*1fa6dee9SAndroid Build Coastguard Worker "" + 221*1fa6dee9SAndroid Build Coastguard Worker "baz" 222*1fa6dee9SAndroid Build Coastguard Worker`, 223*1fa6dee9SAndroid Build Coastguard Worker }, 224*1fa6dee9SAndroid Build Coastguard Worker { 225*1fa6dee9SAndroid Build Coastguard Worker input: ` 226*1fa6dee9SAndroid Build Coastguard Worker//test 227*1fa6dee9SAndroid Build Coastguard Workertest /* test */ { 228*1fa6dee9SAndroid Build Coastguard Worker srcs: [ 229*1fa6dee9SAndroid Build Coastguard Worker /*"bootstrap/bootstrap.go", 230*1fa6dee9SAndroid Build Coastguard Worker "bootstrap/cleanup.go",*/ 231*1fa6dee9SAndroid Build Coastguard Worker "bootstrap/command.go", 232*1fa6dee9SAndroid Build Coastguard Worker "bootstrap/doc.go", //doc.go 233*1fa6dee9SAndroid Build Coastguard Worker "bootstrap/config.go", //config.go 234*1fa6dee9SAndroid Build Coastguard Worker ], 235*1fa6dee9SAndroid Build Coastguard Worker deps: ["libabc"], 236*1fa6dee9SAndroid Build Coastguard Worker incs: [] 237*1fa6dee9SAndroid Build Coastguard Worker} //test 238*1fa6dee9SAndroid Build Coastguard Worker//test 239*1fa6dee9SAndroid Build Coastguard Workertest2 { 240*1fa6dee9SAndroid Build Coastguard Worker} 241*1fa6dee9SAndroid Build Coastguard Worker 242*1fa6dee9SAndroid Build Coastguard Worker 243*1fa6dee9SAndroid Build Coastguard Worker//test3 244*1fa6dee9SAndroid Build Coastguard Worker`, 245*1fa6dee9SAndroid Build Coastguard Worker output: ` 246*1fa6dee9SAndroid Build Coastguard Worker//test 247*1fa6dee9SAndroid Build Coastguard Workertest /* test */ { 248*1fa6dee9SAndroid Build Coastguard Worker srcs: [ 249*1fa6dee9SAndroid Build Coastguard Worker /*"bootstrap/bootstrap.go", 250*1fa6dee9SAndroid Build Coastguard Worker "bootstrap/cleanup.go",*/ 251*1fa6dee9SAndroid Build Coastguard Worker "bootstrap/command.go", 252*1fa6dee9SAndroid Build Coastguard Worker "bootstrap/config.go", //config.go 253*1fa6dee9SAndroid Build Coastguard Worker "bootstrap/doc.go", //doc.go 254*1fa6dee9SAndroid Build Coastguard Worker ], 255*1fa6dee9SAndroid Build Coastguard Worker deps: ["libabc"], 256*1fa6dee9SAndroid Build Coastguard Worker incs: [], 257*1fa6dee9SAndroid Build Coastguard Worker} //test 258*1fa6dee9SAndroid Build Coastguard Worker//test 259*1fa6dee9SAndroid Build Coastguard Worker 260*1fa6dee9SAndroid Build Coastguard Workertest2 { 261*1fa6dee9SAndroid Build Coastguard Worker} 262*1fa6dee9SAndroid Build Coastguard Worker 263*1fa6dee9SAndroid Build Coastguard Worker//test3 264*1fa6dee9SAndroid Build Coastguard Worker`, 265*1fa6dee9SAndroid Build Coastguard Worker }, 266*1fa6dee9SAndroid Build Coastguard Worker { 267*1fa6dee9SAndroid Build Coastguard Worker input: ` 268*1fa6dee9SAndroid Build Coastguard Worker// test 269*1fa6dee9SAndroid Build Coastguard Workermodule // test 270*1fa6dee9SAndroid Build Coastguard Worker 271*1fa6dee9SAndroid Build Coastguard Worker { 272*1fa6dee9SAndroid Build Coastguard Worker srcs 273*1fa6dee9SAndroid Build Coastguard Worker : [ 274*1fa6dee9SAndroid Build Coastguard Worker "src1.c", 275*1fa6dee9SAndroid Build Coastguard Worker "src2.c", 276*1fa6dee9SAndroid Build Coastguard Worker ], 277*1fa6dee9SAndroid Build Coastguard Worker//test 278*1fa6dee9SAndroid Build Coastguard Worker} 279*1fa6dee9SAndroid Build Coastguard Worker//test2 280*1fa6dee9SAndroid Build Coastguard Worker`, 281*1fa6dee9SAndroid Build Coastguard Worker output: ` 282*1fa6dee9SAndroid Build Coastguard Worker// test 283*1fa6dee9SAndroid Build Coastguard Workermodule { // test 284*1fa6dee9SAndroid Build Coastguard Worker srcs: [ 285*1fa6dee9SAndroid Build Coastguard Worker "src1.c", 286*1fa6dee9SAndroid Build Coastguard Worker "src2.c", 287*1fa6dee9SAndroid Build Coastguard Worker ], 288*1fa6dee9SAndroid Build Coastguard Worker //test 289*1fa6dee9SAndroid Build Coastguard Worker} 290*1fa6dee9SAndroid Build Coastguard Worker 291*1fa6dee9SAndroid Build Coastguard Worker//test2 292*1fa6dee9SAndroid Build Coastguard Worker`, 293*1fa6dee9SAndroid Build Coastguard Worker }, 294*1fa6dee9SAndroid Build Coastguard Worker { 295*1fa6dee9SAndroid Build Coastguard Worker input: ` 296*1fa6dee9SAndroid Build Coastguard Worker/*test { 297*1fa6dee9SAndroid Build Coastguard Worker test: true, 298*1fa6dee9SAndroid Build Coastguard Worker}*/ 299*1fa6dee9SAndroid Build Coastguard Worker 300*1fa6dee9SAndroid Build Coastguard Workertest { 301*1fa6dee9SAndroid Build Coastguard Worker/*test: true,*/ 302*1fa6dee9SAndroid Build Coastguard Worker} 303*1fa6dee9SAndroid Build Coastguard Worker 304*1fa6dee9SAndroid Build Coastguard Worker// This 305*1fa6dee9SAndroid Build Coastguard Worker/* Is *//* A */ // A 306*1fa6dee9SAndroid Build Coastguard Worker// A 307*1fa6dee9SAndroid Build Coastguard Worker 308*1fa6dee9SAndroid Build Coastguard Worker// Multiline 309*1fa6dee9SAndroid Build Coastguard Worker// Comment 310*1fa6dee9SAndroid Build Coastguard Worker 311*1fa6dee9SAndroid Build Coastguard Workertest {} 312*1fa6dee9SAndroid Build Coastguard Worker 313*1fa6dee9SAndroid Build Coastguard Worker// This 314*1fa6dee9SAndroid Build Coastguard Worker/* Is */ 315*1fa6dee9SAndroid Build Coastguard Worker// A 316*1fa6dee9SAndroid Build Coastguard Worker// Trailing 317*1fa6dee9SAndroid Build Coastguard Worker 318*1fa6dee9SAndroid Build Coastguard Worker// Multiline 319*1fa6dee9SAndroid Build Coastguard Worker// Comment 320*1fa6dee9SAndroid Build Coastguard Worker`, 321*1fa6dee9SAndroid Build Coastguard Worker output: ` 322*1fa6dee9SAndroid Build Coastguard Worker/*test { 323*1fa6dee9SAndroid Build Coastguard Worker test: true, 324*1fa6dee9SAndroid Build Coastguard Worker}*/ 325*1fa6dee9SAndroid Build Coastguard Worker 326*1fa6dee9SAndroid Build Coastguard Workertest { 327*1fa6dee9SAndroid Build Coastguard Worker /*test: true,*/ 328*1fa6dee9SAndroid Build Coastguard Worker} 329*1fa6dee9SAndroid Build Coastguard Worker 330*1fa6dee9SAndroid Build Coastguard Worker// This 331*1fa6dee9SAndroid Build Coastguard Worker/* Is */ /* A */ // A 332*1fa6dee9SAndroid Build Coastguard Worker// A 333*1fa6dee9SAndroid Build Coastguard Worker 334*1fa6dee9SAndroid Build Coastguard Worker// Multiline 335*1fa6dee9SAndroid Build Coastguard Worker// Comment 336*1fa6dee9SAndroid Build Coastguard Worker 337*1fa6dee9SAndroid Build Coastguard Workertest {} 338*1fa6dee9SAndroid Build Coastguard Worker 339*1fa6dee9SAndroid Build Coastguard Worker// This 340*1fa6dee9SAndroid Build Coastguard Worker/* Is */ 341*1fa6dee9SAndroid Build Coastguard Worker// A 342*1fa6dee9SAndroid Build Coastguard Worker// Trailing 343*1fa6dee9SAndroid Build Coastguard Worker 344*1fa6dee9SAndroid Build Coastguard Worker// Multiline 345*1fa6dee9SAndroid Build Coastguard Worker// Comment 346*1fa6dee9SAndroid Build Coastguard Worker`, 347*1fa6dee9SAndroid Build Coastguard Worker }, 348*1fa6dee9SAndroid Build Coastguard Worker { 349*1fa6dee9SAndroid Build Coastguard Worker input: ` 350*1fa6dee9SAndroid Build Coastguard Workertest // test 351*1fa6dee9SAndroid Build Coastguard Worker 352*1fa6dee9SAndroid Build Coastguard Worker// test 353*1fa6dee9SAndroid Build Coastguard Worker{ 354*1fa6dee9SAndroid Build Coastguard Worker} 355*1fa6dee9SAndroid Build Coastguard Worker`, 356*1fa6dee9SAndroid Build Coastguard Worker output: ` 357*1fa6dee9SAndroid Build Coastguard Workertest { // test 358*1fa6dee9SAndroid Build Coastguard Worker// test 359*1fa6dee9SAndroid Build Coastguard Worker} 360*1fa6dee9SAndroid Build Coastguard Worker`, 361*1fa6dee9SAndroid Build Coastguard Worker }, 362*1fa6dee9SAndroid Build Coastguard Worker { 363*1fa6dee9SAndroid Build Coastguard Worker input: ` 364*1fa6dee9SAndroid Build Coastguard Worker// test 365*1fa6dee9SAndroid Build Coastguard Workerstuff { 366*1fa6dee9SAndroid Build Coastguard Worker namespace: "google", 367*1fa6dee9SAndroid Build Coastguard Worker string_vars: [ 368*1fa6dee9SAndroid Build Coastguard Worker { 369*1fa6dee9SAndroid Build Coastguard Worker var: "one", 370*1fa6dee9SAndroid Build Coastguard Worker values: [ "one_a", "one_b",], 371*1fa6dee9SAndroid Build Coastguard Worker }, 372*1fa6dee9SAndroid Build Coastguard Worker { 373*1fa6dee9SAndroid Build Coastguard Worker var: "two", 374*1fa6dee9SAndroid Build Coastguard Worker values: [ "two_a", "two_b", ], 375*1fa6dee9SAndroid Build Coastguard Worker }, 376*1fa6dee9SAndroid Build Coastguard Worker ], 377*1fa6dee9SAndroid Build Coastguard Worker}`, 378*1fa6dee9SAndroid Build Coastguard Worker output: ` 379*1fa6dee9SAndroid Build Coastguard Worker// test 380*1fa6dee9SAndroid Build Coastguard Workerstuff { 381*1fa6dee9SAndroid Build Coastguard Worker namespace: "google", 382*1fa6dee9SAndroid Build Coastguard Worker string_vars: [ 383*1fa6dee9SAndroid Build Coastguard Worker { 384*1fa6dee9SAndroid Build Coastguard Worker var: "one", 385*1fa6dee9SAndroid Build Coastguard Worker values: [ 386*1fa6dee9SAndroid Build Coastguard Worker "one_a", 387*1fa6dee9SAndroid Build Coastguard Worker "one_b", 388*1fa6dee9SAndroid Build Coastguard Worker ], 389*1fa6dee9SAndroid Build Coastguard Worker }, 390*1fa6dee9SAndroid Build Coastguard Worker { 391*1fa6dee9SAndroid Build Coastguard Worker var: "two", 392*1fa6dee9SAndroid Build Coastguard Worker values: [ 393*1fa6dee9SAndroid Build Coastguard Worker "two_a", 394*1fa6dee9SAndroid Build Coastguard Worker "two_b", 395*1fa6dee9SAndroid Build Coastguard Worker ], 396*1fa6dee9SAndroid Build Coastguard Worker }, 397*1fa6dee9SAndroid Build Coastguard Worker ], 398*1fa6dee9SAndroid Build Coastguard Worker} 399*1fa6dee9SAndroid Build Coastguard Worker`, 400*1fa6dee9SAndroid Build Coastguard Worker }, 401*1fa6dee9SAndroid Build Coastguard Worker { 402*1fa6dee9SAndroid Build Coastguard Worker input: ` 403*1fa6dee9SAndroid Build Coastguard Worker// test 404*1fa6dee9SAndroid Build Coastguard Workerstuff { 405*1fa6dee9SAndroid Build Coastguard Worker namespace: "google", 406*1fa6dee9SAndroid Build Coastguard Worker list_of_lists: [ 407*1fa6dee9SAndroid Build Coastguard Worker [ "a", "b" ], 408*1fa6dee9SAndroid Build Coastguard Worker [ "c", "d" ], 409*1fa6dee9SAndroid Build Coastguard Worker ], 410*1fa6dee9SAndroid Build Coastguard Worker} 411*1fa6dee9SAndroid Build Coastguard Worker`, 412*1fa6dee9SAndroid Build Coastguard Worker output: ` 413*1fa6dee9SAndroid Build Coastguard Worker// test 414*1fa6dee9SAndroid Build Coastguard Workerstuff { 415*1fa6dee9SAndroid Build Coastguard Worker namespace: "google", 416*1fa6dee9SAndroid Build Coastguard Worker list_of_lists: [ 417*1fa6dee9SAndroid Build Coastguard Worker [ 418*1fa6dee9SAndroid Build Coastguard Worker "a", 419*1fa6dee9SAndroid Build Coastguard Worker "b", 420*1fa6dee9SAndroid Build Coastguard Worker ], 421*1fa6dee9SAndroid Build Coastguard Worker [ 422*1fa6dee9SAndroid Build Coastguard Worker "c", 423*1fa6dee9SAndroid Build Coastguard Worker "d", 424*1fa6dee9SAndroid Build Coastguard Worker ], 425*1fa6dee9SAndroid Build Coastguard Worker ], 426*1fa6dee9SAndroid Build Coastguard Worker} 427*1fa6dee9SAndroid Build Coastguard Worker`, 428*1fa6dee9SAndroid Build Coastguard Worker }, 429*1fa6dee9SAndroid Build Coastguard Worker { 430*1fa6dee9SAndroid Build Coastguard Worker input: ` 431*1fa6dee9SAndroid Build Coastguard Worker// test 432*1fa6dee9SAndroid Build Coastguard Workerstuff { 433*1fa6dee9SAndroid Build Coastguard Worker namespace: "google", 434*1fa6dee9SAndroid Build Coastguard Worker list_of_structs: [{ key1: "a", key2: "b" }], 435*1fa6dee9SAndroid Build Coastguard Worker} 436*1fa6dee9SAndroid Build Coastguard Worker`, 437*1fa6dee9SAndroid Build Coastguard Worker output: ` 438*1fa6dee9SAndroid Build Coastguard Worker// test 439*1fa6dee9SAndroid Build Coastguard Workerstuff { 440*1fa6dee9SAndroid Build Coastguard Worker namespace: "google", 441*1fa6dee9SAndroid Build Coastguard Worker list_of_structs: [ 442*1fa6dee9SAndroid Build Coastguard Worker { 443*1fa6dee9SAndroid Build Coastguard Worker key1: "a", 444*1fa6dee9SAndroid Build Coastguard Worker key2: "b", 445*1fa6dee9SAndroid Build Coastguard Worker }, 446*1fa6dee9SAndroid Build Coastguard Worker ], 447*1fa6dee9SAndroid Build Coastguard Worker} 448*1fa6dee9SAndroid Build Coastguard Worker`, 449*1fa6dee9SAndroid Build Coastguard Worker }, 450*1fa6dee9SAndroid Build Coastguard Worker { 451*1fa6dee9SAndroid Build Coastguard Worker input: ` 452*1fa6dee9SAndroid Build Coastguard Worker// test 453*1fa6dee9SAndroid Build Coastguard Workerfoo { 454*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 455*1fa6dee9SAndroid Build Coastguard Worker "a", // great comment 456*1fa6dee9SAndroid Build Coastguard Worker "b", 457*1fa6dee9SAndroid Build Coastguard Worker ], 458*1fa6dee9SAndroid Build Coastguard Worker} 459*1fa6dee9SAndroid Build Coastguard Worker`, 460*1fa6dee9SAndroid Build Coastguard Worker output: ` 461*1fa6dee9SAndroid Build Coastguard Worker// test 462*1fa6dee9SAndroid Build Coastguard Workerfoo { 463*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 464*1fa6dee9SAndroid Build Coastguard Worker "a", // great comment 465*1fa6dee9SAndroid Build Coastguard Worker "b", 466*1fa6dee9SAndroid Build Coastguard Worker ], 467*1fa6dee9SAndroid Build Coastguard Worker} 468*1fa6dee9SAndroid Build Coastguard Worker`, 469*1fa6dee9SAndroid Build Coastguard Worker }, 470*1fa6dee9SAndroid Build Coastguard Worker { 471*1fa6dee9SAndroid Build Coastguard Worker input: ` 472*1fa6dee9SAndroid Build Coastguard Worker// test 473*1fa6dee9SAndroid Build Coastguard Workerfoo { 474*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 475*1fa6dee9SAndroid Build Coastguard Worker "a", 476*1fa6dee9SAndroid Build Coastguard Worker // b comment 477*1fa6dee9SAndroid Build Coastguard Worker "b", 478*1fa6dee9SAndroid Build Coastguard Worker ], 479*1fa6dee9SAndroid Build Coastguard Worker} 480*1fa6dee9SAndroid Build Coastguard Worker`, 481*1fa6dee9SAndroid Build Coastguard Worker output: ` 482*1fa6dee9SAndroid Build Coastguard Worker// test 483*1fa6dee9SAndroid Build Coastguard Workerfoo { 484*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 485*1fa6dee9SAndroid Build Coastguard Worker "a", 486*1fa6dee9SAndroid Build Coastguard Worker // b comment 487*1fa6dee9SAndroid Build Coastguard Worker "b", 488*1fa6dee9SAndroid Build Coastguard Worker ], 489*1fa6dee9SAndroid Build Coastguard Worker} 490*1fa6dee9SAndroid Build Coastguard Worker`, 491*1fa6dee9SAndroid Build Coastguard Worker }, 492*1fa6dee9SAndroid Build Coastguard Worker { 493*1fa6dee9SAndroid Build Coastguard Worker input: ` 494*1fa6dee9SAndroid Build Coastguard Worker// test 495*1fa6dee9SAndroid Build Coastguard Workerfoo { 496*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 497*1fa6dee9SAndroid Build Coastguard Worker "a", // a comment 498*1fa6dee9SAndroid Build Coastguard Worker // b comment 499*1fa6dee9SAndroid Build Coastguard Worker "b", 500*1fa6dee9SAndroid Build Coastguard Worker ], 501*1fa6dee9SAndroid Build Coastguard Worker} 502*1fa6dee9SAndroid Build Coastguard Worker`, 503*1fa6dee9SAndroid Build Coastguard Worker output: ` 504*1fa6dee9SAndroid Build Coastguard Worker// test 505*1fa6dee9SAndroid Build Coastguard Workerfoo { 506*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 507*1fa6dee9SAndroid Build Coastguard Worker "a", // a comment 508*1fa6dee9SAndroid Build Coastguard Worker // b comment 509*1fa6dee9SAndroid Build Coastguard Worker "b", 510*1fa6dee9SAndroid Build Coastguard Worker ], 511*1fa6dee9SAndroid Build Coastguard Worker} 512*1fa6dee9SAndroid Build Coastguard Worker`, 513*1fa6dee9SAndroid Build Coastguard Worker }, 514*1fa6dee9SAndroid Build Coastguard Worker { 515*1fa6dee9SAndroid Build Coastguard Worker input: ` 516*1fa6dee9SAndroid Build Coastguard Worker// test 517*1fa6dee9SAndroid Build Coastguard Workerfoo { 518*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 519*1fa6dee9SAndroid Build Coastguard Worker "a", 520*1fa6dee9SAndroid Build Coastguard Worker // b comment 521*1fa6dee9SAndroid Build Coastguard Worker // on multiline 522*1fa6dee9SAndroid Build Coastguard Worker "b", 523*1fa6dee9SAndroid Build Coastguard Worker ], 524*1fa6dee9SAndroid Build Coastguard Worker} 525*1fa6dee9SAndroid Build Coastguard Worker`, 526*1fa6dee9SAndroid Build Coastguard Worker output: ` 527*1fa6dee9SAndroid Build Coastguard Worker// test 528*1fa6dee9SAndroid Build Coastguard Workerfoo { 529*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 530*1fa6dee9SAndroid Build Coastguard Worker "a", 531*1fa6dee9SAndroid Build Coastguard Worker // b comment 532*1fa6dee9SAndroid Build Coastguard Worker // on multiline 533*1fa6dee9SAndroid Build Coastguard Worker "b", 534*1fa6dee9SAndroid Build Coastguard Worker ], 535*1fa6dee9SAndroid Build Coastguard Worker} 536*1fa6dee9SAndroid Build Coastguard Worker`, 537*1fa6dee9SAndroid Build Coastguard Worker }, 538*1fa6dee9SAndroid Build Coastguard Worker { // Line comment are treat as groups separator 539*1fa6dee9SAndroid Build Coastguard Worker input: ` 540*1fa6dee9SAndroid Build Coastguard Worker// test 541*1fa6dee9SAndroid Build Coastguard Workerfoo { 542*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 543*1fa6dee9SAndroid Build Coastguard Worker "b", 544*1fa6dee9SAndroid Build Coastguard Worker // a comment 545*1fa6dee9SAndroid Build Coastguard Worker "a", 546*1fa6dee9SAndroid Build Coastguard Worker ], 547*1fa6dee9SAndroid Build Coastguard Worker} 548*1fa6dee9SAndroid Build Coastguard Worker`, 549*1fa6dee9SAndroid Build Coastguard Worker output: ` 550*1fa6dee9SAndroid Build Coastguard Worker// test 551*1fa6dee9SAndroid Build Coastguard Workerfoo { 552*1fa6dee9SAndroid Build Coastguard Worker stuff: [ 553*1fa6dee9SAndroid Build Coastguard Worker "b", 554*1fa6dee9SAndroid Build Coastguard Worker // a comment 555*1fa6dee9SAndroid Build Coastguard Worker "a", 556*1fa6dee9SAndroid Build Coastguard Worker ], 557*1fa6dee9SAndroid Build Coastguard Worker} 558*1fa6dee9SAndroid Build Coastguard Worker`, 559*1fa6dee9SAndroid Build Coastguard Worker }, 560*1fa6dee9SAndroid Build Coastguard Worker { 561*1fa6dee9SAndroid Build Coastguard Worker name: "Basic selects", 562*1fa6dee9SAndroid Build Coastguard Worker input: ` 563*1fa6dee9SAndroid Build Coastguard Worker// test 564*1fa6dee9SAndroid Build Coastguard Workerfoo { 565*1fa6dee9SAndroid Build Coastguard Worker stuff: select(soong_config_variable("my_namespace", "my_variable"), { 566*1fa6dee9SAndroid Build Coastguard Worker "a": "a2", 567*1fa6dee9SAndroid Build Coastguard Worker // test2 568*1fa6dee9SAndroid Build Coastguard Worker "b": "b2", 569*1fa6dee9SAndroid Build Coastguard Worker // test3 570*1fa6dee9SAndroid Build Coastguard Worker default: "c2", 571*1fa6dee9SAndroid Build Coastguard Worker }), 572*1fa6dee9SAndroid Build Coastguard Worker} 573*1fa6dee9SAndroid Build Coastguard Worker`, 574*1fa6dee9SAndroid Build Coastguard Worker output: ` 575*1fa6dee9SAndroid Build Coastguard Worker// test 576*1fa6dee9SAndroid Build Coastguard Workerfoo { 577*1fa6dee9SAndroid Build Coastguard Worker stuff: select(soong_config_variable("my_namespace", "my_variable"), { 578*1fa6dee9SAndroid Build Coastguard Worker "a": "a2", 579*1fa6dee9SAndroid Build Coastguard Worker // test2 580*1fa6dee9SAndroid Build Coastguard Worker "b": "b2", 581*1fa6dee9SAndroid Build Coastguard Worker // test3 582*1fa6dee9SAndroid Build Coastguard Worker default: "c2", 583*1fa6dee9SAndroid Build Coastguard Worker }), 584*1fa6dee9SAndroid Build Coastguard Worker} 585*1fa6dee9SAndroid Build Coastguard Worker`, 586*1fa6dee9SAndroid Build Coastguard Worker }, 587*1fa6dee9SAndroid Build Coastguard Worker { 588*1fa6dee9SAndroid Build Coastguard Worker name: "Remove select with only default", 589*1fa6dee9SAndroid Build Coastguard Worker input: ` 590*1fa6dee9SAndroid Build Coastguard Worker// test 591*1fa6dee9SAndroid Build Coastguard Workerfoo { 592*1fa6dee9SAndroid Build Coastguard Worker stuff: select(soong_config_variable("my_namespace", "my_variable"), { 593*1fa6dee9SAndroid Build Coastguard Worker // test2 594*1fa6dee9SAndroid Build Coastguard Worker default: "c2", 595*1fa6dee9SAndroid Build Coastguard Worker }), 596*1fa6dee9SAndroid Build Coastguard Worker} 597*1fa6dee9SAndroid Build Coastguard Worker`, 598*1fa6dee9SAndroid Build Coastguard Worker output: ` 599*1fa6dee9SAndroid Build Coastguard Worker// test 600*1fa6dee9SAndroid Build Coastguard Workerfoo { 601*1fa6dee9SAndroid Build Coastguard Worker stuff: "c2", // test2 602*1fa6dee9SAndroid Build Coastguard Worker} 603*1fa6dee9SAndroid Build Coastguard Worker`, 604*1fa6dee9SAndroid Build Coastguard Worker }, 605*1fa6dee9SAndroid Build Coastguard Worker { 606*1fa6dee9SAndroid Build Coastguard Worker name: "Appended selects", 607*1fa6dee9SAndroid Build Coastguard Worker input: ` 608*1fa6dee9SAndroid Build Coastguard Worker// test 609*1fa6dee9SAndroid Build Coastguard Workerfoo { 610*1fa6dee9SAndroid Build Coastguard Worker stuff: select(soong_config_variable("my_namespace", "my_variable"), { 611*1fa6dee9SAndroid Build Coastguard Worker "a": "a2", 612*1fa6dee9SAndroid Build Coastguard Worker // test2 613*1fa6dee9SAndroid Build Coastguard Worker "b": "b2", 614*1fa6dee9SAndroid Build Coastguard Worker // test3 615*1fa6dee9SAndroid Build Coastguard Worker default: "c2", 616*1fa6dee9SAndroid Build Coastguard Worker }) + select(release_variable("RELEASE_TEST"), { 617*1fa6dee9SAndroid Build Coastguard Worker "d": "d2", 618*1fa6dee9SAndroid Build Coastguard Worker "e": "e2", 619*1fa6dee9SAndroid Build Coastguard Worker default: "f2", 620*1fa6dee9SAndroid Build Coastguard Worker }), 621*1fa6dee9SAndroid Build Coastguard Worker} 622*1fa6dee9SAndroid Build Coastguard Worker`, 623*1fa6dee9SAndroid Build Coastguard Worker output: ` 624*1fa6dee9SAndroid Build Coastguard Worker// test 625*1fa6dee9SAndroid Build Coastguard Workerfoo { 626*1fa6dee9SAndroid Build Coastguard Worker stuff: select(soong_config_variable("my_namespace", "my_variable"), { 627*1fa6dee9SAndroid Build Coastguard Worker "a": "a2", 628*1fa6dee9SAndroid Build Coastguard Worker // test2 629*1fa6dee9SAndroid Build Coastguard Worker "b": "b2", 630*1fa6dee9SAndroid Build Coastguard Worker // test3 631*1fa6dee9SAndroid Build Coastguard Worker default: "c2", 632*1fa6dee9SAndroid Build Coastguard Worker }) + select(release_variable("RELEASE_TEST"), { 633*1fa6dee9SAndroid Build Coastguard Worker "d": "d2", 634*1fa6dee9SAndroid Build Coastguard Worker "e": "e2", 635*1fa6dee9SAndroid Build Coastguard Worker default: "f2", 636*1fa6dee9SAndroid Build Coastguard Worker }), 637*1fa6dee9SAndroid Build Coastguard Worker} 638*1fa6dee9SAndroid Build Coastguard Worker`, 639*1fa6dee9SAndroid Build Coastguard Worker }, 640*1fa6dee9SAndroid Build Coastguard Worker { 641*1fa6dee9SAndroid Build Coastguard Worker name: "Select with unset property", 642*1fa6dee9SAndroid Build Coastguard Worker input: ` 643*1fa6dee9SAndroid Build Coastguard Workerfoo { 644*1fa6dee9SAndroid Build Coastguard Worker stuff: select(soong_config_variable("my_namespace", "my_variable"), { 645*1fa6dee9SAndroid Build Coastguard Worker "foo": unset, 646*1fa6dee9SAndroid Build Coastguard Worker default: "c2", 647*1fa6dee9SAndroid Build Coastguard Worker }), 648*1fa6dee9SAndroid Build Coastguard Worker} 649*1fa6dee9SAndroid Build Coastguard Worker`, 650*1fa6dee9SAndroid Build Coastguard Worker output: ` 651*1fa6dee9SAndroid Build Coastguard Workerfoo { 652*1fa6dee9SAndroid Build Coastguard Worker stuff: select(soong_config_variable("my_namespace", "my_variable"), { 653*1fa6dee9SAndroid Build Coastguard Worker "foo": unset, 654*1fa6dee9SAndroid Build Coastguard Worker default: "c2", 655*1fa6dee9SAndroid Build Coastguard Worker }), 656*1fa6dee9SAndroid Build Coastguard Worker} 657*1fa6dee9SAndroid Build Coastguard Worker`, 658*1fa6dee9SAndroid Build Coastguard Worker }, 659*1fa6dee9SAndroid Build Coastguard Worker { 660*1fa6dee9SAndroid Build Coastguard Worker name: "Multi-condition select", 661*1fa6dee9SAndroid Build Coastguard Worker input: ` 662*1fa6dee9SAndroid Build Coastguard Workerfoo { 663*1fa6dee9SAndroid Build Coastguard Worker stuff: select((arch(), os()), { 664*1fa6dee9SAndroid Build Coastguard Worker ("x86", "linux"): "a", 665*1fa6dee9SAndroid Build Coastguard Worker (default, default): "b", 666*1fa6dee9SAndroid Build Coastguard Worker }), 667*1fa6dee9SAndroid Build Coastguard Worker} 668*1fa6dee9SAndroid Build Coastguard Worker`, 669*1fa6dee9SAndroid Build Coastguard Worker output: ` 670*1fa6dee9SAndroid Build Coastguard Workerfoo { 671*1fa6dee9SAndroid Build Coastguard Worker stuff: select((arch(), os()), { 672*1fa6dee9SAndroid Build Coastguard Worker ("x86", "linux"): "a", 673*1fa6dee9SAndroid Build Coastguard Worker (default, default): "b", 674*1fa6dee9SAndroid Build Coastguard Worker }), 675*1fa6dee9SAndroid Build Coastguard Worker} 676*1fa6dee9SAndroid Build Coastguard Worker`, 677*1fa6dee9SAndroid Build Coastguard Worker }, 678*1fa6dee9SAndroid Build Coastguard Worker { 679*1fa6dee9SAndroid Build Coastguard Worker name: "Multi-condition select with conditions on new lines", 680*1fa6dee9SAndroid Build Coastguard Worker input: ` 681*1fa6dee9SAndroid Build Coastguard Workerfoo { 682*1fa6dee9SAndroid Build Coastguard Worker stuff: select((arch(), 683*1fa6dee9SAndroid Build Coastguard Worker os()), { 684*1fa6dee9SAndroid Build Coastguard Worker ("x86", "linux"): "a", 685*1fa6dee9SAndroid Build Coastguard Worker (default, default): "b", 686*1fa6dee9SAndroid Build Coastguard Worker }), 687*1fa6dee9SAndroid Build Coastguard Worker} 688*1fa6dee9SAndroid Build Coastguard Worker`, 689*1fa6dee9SAndroid Build Coastguard Worker output: ` 690*1fa6dee9SAndroid Build Coastguard Workerfoo { 691*1fa6dee9SAndroid Build Coastguard Worker stuff: select(( 692*1fa6dee9SAndroid Build Coastguard Worker arch(), 693*1fa6dee9SAndroid Build Coastguard Worker os(), 694*1fa6dee9SAndroid Build Coastguard Worker ), { 695*1fa6dee9SAndroid Build Coastguard Worker ("x86", "linux"): "a", 696*1fa6dee9SAndroid Build Coastguard Worker (default, default): "b", 697*1fa6dee9SAndroid Build Coastguard Worker }), 698*1fa6dee9SAndroid Build Coastguard Worker} 699*1fa6dee9SAndroid Build Coastguard Worker`, 700*1fa6dee9SAndroid Build Coastguard Worker }, 701*1fa6dee9SAndroid Build Coastguard Worker { 702*1fa6dee9SAndroid Build Coastguard Worker name: "Select with multiline inner expression", 703*1fa6dee9SAndroid Build Coastguard Worker input: ` 704*1fa6dee9SAndroid Build Coastguard Workerfoo { 705*1fa6dee9SAndroid Build Coastguard Worker cflags: [ 706*1fa6dee9SAndroid Build Coastguard Worker "-DPRODUCT_COMPATIBLE_PROPERTY", 707*1fa6dee9SAndroid Build Coastguard Worker "-DRIL_SHLIB", 708*1fa6dee9SAndroid Build Coastguard Worker "-Wall", 709*1fa6dee9SAndroid Build Coastguard Worker "-Wextra", 710*1fa6dee9SAndroid Build Coastguard Worker "-Werror", 711*1fa6dee9SAndroid Build Coastguard Worker ] + select(soong_config_variable("sim", "sim_count"), { 712*1fa6dee9SAndroid Build Coastguard Worker "2": [ 713*1fa6dee9SAndroid Build Coastguard Worker "-DANDROID_MULTI_SIM", 714*1fa6dee9SAndroid Build Coastguard Worker "-DANDROID_SIM_COUNT_2", 715*1fa6dee9SAndroid Build Coastguard Worker ], 716*1fa6dee9SAndroid Build Coastguard Worker default: [], 717*1fa6dee9SAndroid Build Coastguard Worker }), 718*1fa6dee9SAndroid Build Coastguard Worker} 719*1fa6dee9SAndroid Build Coastguard Worker`, 720*1fa6dee9SAndroid Build Coastguard Worker output: ` 721*1fa6dee9SAndroid Build Coastguard Workerfoo { 722*1fa6dee9SAndroid Build Coastguard Worker cflags: [ 723*1fa6dee9SAndroid Build Coastguard Worker "-DPRODUCT_COMPATIBLE_PROPERTY", 724*1fa6dee9SAndroid Build Coastguard Worker "-DRIL_SHLIB", 725*1fa6dee9SAndroid Build Coastguard Worker "-Wall", 726*1fa6dee9SAndroid Build Coastguard Worker "-Werror", 727*1fa6dee9SAndroid Build Coastguard Worker "-Wextra", 728*1fa6dee9SAndroid Build Coastguard Worker ] + select(soong_config_variable("sim", "sim_count"), { 729*1fa6dee9SAndroid Build Coastguard Worker "2": [ 730*1fa6dee9SAndroid Build Coastguard Worker "-DANDROID_MULTI_SIM", 731*1fa6dee9SAndroid Build Coastguard Worker "-DANDROID_SIM_COUNT_2", 732*1fa6dee9SAndroid Build Coastguard Worker ], 733*1fa6dee9SAndroid Build Coastguard Worker default: [], 734*1fa6dee9SAndroid Build Coastguard Worker }), 735*1fa6dee9SAndroid Build Coastguard Worker} 736*1fa6dee9SAndroid Build Coastguard Worker`, 737*1fa6dee9SAndroid Build Coastguard Worker }, 738*1fa6dee9SAndroid Build Coastguard Worker { 739*1fa6dee9SAndroid Build Coastguard Worker name: "Select with bindings", 740*1fa6dee9SAndroid Build Coastguard Worker input: ` 741*1fa6dee9SAndroid Build Coastguard Workerfoo { 742*1fa6dee9SAndroid Build Coastguard Worker stuff: select(arch(), { 743*1fa6dee9SAndroid Build Coastguard Worker "x86": "a", 744*1fa6dee9SAndroid Build Coastguard Worker any 745*1fa6dee9SAndroid Build Coastguard Worker @ baz: "b" + baz, 746*1fa6dee9SAndroid Build Coastguard Worker }), 747*1fa6dee9SAndroid Build Coastguard Worker} 748*1fa6dee9SAndroid Build Coastguard Worker`, 749*1fa6dee9SAndroid Build Coastguard Worker output: ` 750*1fa6dee9SAndroid Build Coastguard Workerfoo { 751*1fa6dee9SAndroid Build Coastguard Worker stuff: select(arch(), { 752*1fa6dee9SAndroid Build Coastguard Worker "x86": "a", 753*1fa6dee9SAndroid Build Coastguard Worker any @ baz: "b" + baz, 754*1fa6dee9SAndroid Build Coastguard Worker }), 755*1fa6dee9SAndroid Build Coastguard Worker} 756*1fa6dee9SAndroid Build Coastguard Worker`, 757*1fa6dee9SAndroid Build Coastguard Worker }, 758*1fa6dee9SAndroid Build Coastguard Worker { 759*1fa6dee9SAndroid Build Coastguard Worker name: "Simplify select", 760*1fa6dee9SAndroid Build Coastguard Worker input: ` 761*1fa6dee9SAndroid Build Coastguard Workerfoo { 762*1fa6dee9SAndroid Build Coastguard Worker stuff: select(arch(), { 763*1fa6dee9SAndroid Build Coastguard Worker default: "a", 764*1fa6dee9SAndroid Build Coastguard Worker }), 765*1fa6dee9SAndroid Build Coastguard Worker} 766*1fa6dee9SAndroid Build Coastguard Worker`, 767*1fa6dee9SAndroid Build Coastguard Worker output: ` 768*1fa6dee9SAndroid Build Coastguard Workerfoo { 769*1fa6dee9SAndroid Build Coastguard Worker stuff: "a", 770*1fa6dee9SAndroid Build Coastguard Worker} 771*1fa6dee9SAndroid Build Coastguard Worker`, 772*1fa6dee9SAndroid Build Coastguard Worker }, 773*1fa6dee9SAndroid Build Coastguard Worker { 774*1fa6dee9SAndroid Build Coastguard Worker name: "Simplify select with append", 775*1fa6dee9SAndroid Build Coastguard Worker input: ` 776*1fa6dee9SAndroid Build Coastguard Workerfoo { 777*1fa6dee9SAndroid Build Coastguard Worker stuff: select(arch(), { 778*1fa6dee9SAndroid Build Coastguard Worker default: "a", 779*1fa6dee9SAndroid Build Coastguard Worker }) + "foo", 780*1fa6dee9SAndroid Build Coastguard Worker} 781*1fa6dee9SAndroid Build Coastguard Worker`, 782*1fa6dee9SAndroid Build Coastguard Worker output: ` 783*1fa6dee9SAndroid Build Coastguard Workerfoo { 784*1fa6dee9SAndroid Build Coastguard Worker stuff: "a" + "foo", 785*1fa6dee9SAndroid Build Coastguard Worker} 786*1fa6dee9SAndroid Build Coastguard Worker`, 787*1fa6dee9SAndroid Build Coastguard Worker }, 788*1fa6dee9SAndroid Build Coastguard Worker} 789*1fa6dee9SAndroid Build Coastguard Worker 790*1fa6dee9SAndroid Build Coastguard Workerfunc TestPrinter(t *testing.T) { 791*1fa6dee9SAndroid Build Coastguard Worker for _, testCase := range validPrinterTestCases { 792*1fa6dee9SAndroid Build Coastguard Worker t.Run(testCase.name, func(t *testing.T) { 793*1fa6dee9SAndroid Build Coastguard Worker in := testCase.input[1:] 794*1fa6dee9SAndroid Build Coastguard Worker expected := testCase.output[1:] 795*1fa6dee9SAndroid Build Coastguard Worker 796*1fa6dee9SAndroid Build Coastguard Worker r := bytes.NewBufferString(in) 797*1fa6dee9SAndroid Build Coastguard Worker file, errs := Parse("", r) 798*1fa6dee9SAndroid Build Coastguard Worker if len(errs) != 0 { 799*1fa6dee9SAndroid Build Coastguard Worker t.Errorf("test case: %s", in) 800*1fa6dee9SAndroid Build Coastguard Worker t.Errorf("unexpected errors:") 801*1fa6dee9SAndroid Build Coastguard Worker for _, err := range errs { 802*1fa6dee9SAndroid Build Coastguard Worker t.Errorf(" %s", err) 803*1fa6dee9SAndroid Build Coastguard Worker } 804*1fa6dee9SAndroid Build Coastguard Worker t.FailNow() 805*1fa6dee9SAndroid Build Coastguard Worker } 806*1fa6dee9SAndroid Build Coastguard Worker 807*1fa6dee9SAndroid Build Coastguard Worker SortLists(file) 808*1fa6dee9SAndroid Build Coastguard Worker 809*1fa6dee9SAndroid Build Coastguard Worker got, err := Print(file) 810*1fa6dee9SAndroid Build Coastguard Worker if err != nil { 811*1fa6dee9SAndroid Build Coastguard Worker t.Errorf("test case: %s", in) 812*1fa6dee9SAndroid Build Coastguard Worker t.Errorf("unexpected error: %s", err) 813*1fa6dee9SAndroid Build Coastguard Worker t.FailNow() 814*1fa6dee9SAndroid Build Coastguard Worker } 815*1fa6dee9SAndroid Build Coastguard Worker 816*1fa6dee9SAndroid Build Coastguard Worker if string(got) != expected { 817*1fa6dee9SAndroid Build Coastguard Worker t.Errorf("test case: %s", in) 818*1fa6dee9SAndroid Build Coastguard Worker t.Errorf(" expected: %s", expected) 819*1fa6dee9SAndroid Build Coastguard Worker t.Errorf(" got: %s", string(got)) 820*1fa6dee9SAndroid Build Coastguard Worker } 821*1fa6dee9SAndroid Build Coastguard Worker }) 822*1fa6dee9SAndroid Build Coastguard Worker } 823*1fa6dee9SAndroid Build Coastguard Worker} 824