bolt icon indicating copy to clipboard operation
bolt copied to clipboard

Syntax error on compiled code when I have a field named "test"

Open 5argon opened this issue 8 years ago • 0 comments

The following code passed the compilation but failed when deploying to Firebase

` path /userPrivate/{uid} is UserPrivateData { read() { auth.uid == uid } write() { auth.uid == uid } }

type UserPrivateData { playerId : String | Null, playerIdHash : Number | Null, formattedShortPlayerId : FormattedShortPlayerId | Null, playerData : String, test : Boolean | Null

create() { 
    //When creating you must have all of them. test is optional.
    (this.playerId != null &&
    this.playerIdHash != null &&
    this.formattedShortPlayerId != null &&
    this.playerData != null &&
    (this.test != null && this.test == true) || (this.test == null))
}

update() {
    //When updating only playerData is allowed.
    (this.playerId == null &&
    this.playerIdHash == null &&
    this.formattedShortPlayerId == null &&
    this.test == null &&
    this.playerData != null)
}
//Can't delete!
//Cannot use write() after using create update delete

}

path /userPublic/{formattedShortPlayerId} is UserPublicData { read() { auth != null } write() { formattedShortPlayerId.length == 12 && formattedShortPlayerId == root.userPrivate[auth.uid].formattedShortPlayerId } }

type UserPublicData { displayName : DisplayName | Null, iconForeground : String | Null, iconBackground : String | Null }

type FormattedShortPlayerId extends String { validate(){ this.length == 12 } }

type DisplayName extends String { validate(){ this.length <= 10 && this.length > 0 } } `

Error saving rules - Line 24: No such method/property 'test'.

Because it produces things like newData.val().test in the output.

However changing test to isTesting for example, solve the issue as the output correctly uses .child('isTesting').val()

5argon avatar Aug 03 '17 12:08 5argon